INSERT (gráfico SQL)
Se aplica a: SQL Server 2017 (14.x) y versiones posteriores Azure SQL Database Azure SQL Managed Instance
Agrega una o varias filas a una tabla node
o edge
en SQL Server.
Convenciones de sintaxis de Transact-SQL
Sintaxis de la tabla INSERT Into node
La sintaxis para insertar en una tabla de nodo es la misma que para una tabla normal.
[ WITH <common_table_expression> [ ,...n ] ]
INSERT
{
[ TOP ( expression ) [ PERCENT ] ]
[ INTO ]
{ <object> | rowset_function_limited
[ WITH ( <Table_Hint_Limited> [ ...n ] ) ]
}
{
[ (column_list) ] | [(<edge_table_column_list>)]
[ <OUTPUT Clause> ]
{ VALUES ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n ]
| derived_table
| execute_statement
| <dml_table_source>
| DEFAULT VALUES
}
}
}
[;]
<object> ::=
{
[ server_name . database_name . schema_name .
| database_name .[ schema_name ] .
| schema_name .
]
node_table_name | edge_table_name
}
<dml_table_source> ::=
SELECT <select_list>
FROM ( <dml_statement_with_output_clause> )
[AS] table_alias [ ( column_alias [ ,...n ] ) ]
[ WHERE <on_or_where_search_condition> ]
[ OPTION ( <query_hint> [ ,...n ] ) ]
<on_or_where_search_condition> ::=
{ <search_condition_with_match> | <search_condition> }
<search_condition_with_match> ::=
{ <graph_predicate> | [ NOT ] <predicate> | ( <search_condition> ) }
[ AND { <graph_predicate> | [ NOT ] <predicate> | ( <search_condition> ) } ]
[ ,...n ]
<search_condition> ::=
{ [ NOT ] <predicate> | ( <search_condition> ) }
[ { AND | OR } [ NOT ] { <predicate> | ( <search_condition> ) } ]
[ ,...n ]
<graph_predicate> ::=
MATCH( <graph_search_pattern> [ AND <graph_search_pattern> ] [ , ...n] )
<graph_search_pattern>::=
<node_alias> { { <-( <edge_alias> )- | -( <edge_alias> )-> } <node_alias> }
<edge_table_column_list> ::=
($from_id, $to_id, [column_list])
Argumentos
Nota:
En este artículo se describen los argumentos relacionados con el grafo de SQL. Para obtener una lista completa y una descripción de los argumentos admitidos en la instrucción INSERT, vea INSERT TABLE (Transact-SQL). Para obtener instrucciones Transact-SQL estándar, vea INSERT TABLE (Transact-SQL).
INTO
Es una palabra clave opcional que se puede usar entre INSERT
y la tabla de destino.
MATCH
search_condition_with_match cláusula se puede usar en una subconsulta al insertarla en un nodo o una tabla perimetral. Para obtener MATCH
la sintaxis de instrucciones, consulte GRAPH MATCH (Transact-SQL).
graph_search_pattern patrón search proporcionado a la MATCH
cláusula como parte del predicado de grafo.
edge_table_column_list Los usuarios deben proporcionar valores para $from_id
y $to_id
mientras se insertan en un borde. Se devuelve un error si no se proporciona un valor o se insertan valores NUL en estas columnas.
Comentarios
- Insertar en un nodo es lo mismo que insertar en cualquier tabla relacional. Los valores de la
$node_id
columna se generan automáticamente. - Mientras inserta filas en una tabla perimetral, debe proporcionar valores para
$from_id
las columnas y$to_id
. - La inserción con BULK en una tabla de nodo es igual que para una tabla relacional.
- Antes de insertar con BULK en una tabla perimetral, las tablas de nodo se deben importar. Así, los valores de
$from_id
y$to_id
se podrán extraer de la columna$node_id
de la tabla de nodo y se insertarán en la tabla perimetral.
Permisos
El permiso INSERT es obligatorio en la tabla de destino.
Los permisos INSERT corresponden de forma predeterminada a los miembros del rol fijo de servidor sysadmin, de los roles fijos de base de datos db_owner y db_datawriter y al propietario de la tabla. Los miembros de los roles sysadmin, db_owner y db_securityadmin y el propietario de la tabla pueden transferir permisos a otros usuarios.
Para ejecutar INSERT con la opción BULK de la función OPENROWSET, debe ser miembro de los roles fijos de servidor sysadmin o bulkadmin.
Ejemplos
A. Insertar en una tabla de nodo
En el ejemplo siguiente se crea una Person
tabla de nodos y se insertan dos filas en esa tabla.
-- Create person node table
CREATE TABLE dbo.Person (ID integer PRIMARY KEY, name varchar(50)) AS NODE;
-- Insert records for Alice and John
INSERT INTO dbo.Person VALUES (1, 'Alice');
INSERT INTO dbo.Person VALUES (2,'John');
B. Insertar en una tabla perimetral
En el ejemplo siguiente se crea una friend
tabla perimetral y se inserta un borde en la tabla.
-- Create friend edge table
CREATE TABLE dbo.friend (start_date DATE) AS EDGE;
-- Create a friend edge, that connect Alice and John
INSERT INTO dbo.friend VALUES ((SELECT $node_id FROM dbo.Person WHERE name = 'Alice'),
(SELECT $node_id FROM dbo.Person WHERE name = 'John'), '9/15/2011');