INSERT (grafo SQL)
Si applica a: SQL Server 2017 (14.x) e alle sue versioni successive Database SQL di Azure Istanza gestita di SQL di Azure
Consente di aggiungere una o più righe a una tabella node
o edge
in SQL Server.
Convenzioni relative alla sintassi Transact-SQL
Sintassi insert into node table
La sintassi per l'inserimento in una tabella nodi è uguale a quella usata per una normale tabella.
[ 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])
Argomenti
Nota
Questo articolo descrive gli argomenti correlati al grafo SQL. Per un elenco completo e una descrizione degli argomenti supportati nell'istruzione INSERT, vedere INSERT TABLE (Transact-SQL). Per istruzioni Transact-SQL standard, vedere INSERT TABLE (Transact-SQL).
INTO
Parola chiave facoltativa che può essere specificata tra INSERT
e la tabella di destinazione.
MATCH
search_condition_with_match clausola può essere usata in una sottoquery durante l'inserimento in una tabella di nodi o archi. Per MATCH
la sintassi dell'istruzione, vedere GRAPH MATCH (Transact-SQL).
graph_search_pattern criterio di ricerca fornito per la MATCH
clausola come parte del predicato del grafo.
edge_table_column_list Gli utenti devono fornire valori per $from_id
e $to_id
durante l'inserimento in un bordo. Viene restituito un errore se non viene specificato un valore o se in queste colonne vengono inseriti valori NULL.
Osservazioni:
- L'inserimento in un nodo corrisponde all'inserimento in qualsiasi tabella relazionale. I valori per la
$node_id
colonna vengono generati automaticamente. - Durante l'inserimento di righe in una tabella perimetrale, è necessario specificare i valori per
$from_id
le colonne e$to_id
. - L'inserimento bulk per la tabella nodi è identico a quello di una tabella relazionale.
- Prima dell'inserimento bulk in una tabella bordi, è necessario importare le tabelle nodi. I valori di
$from_id
e$to_id
possono essere estratti dalla colonna$node_id
della tabella nodi ed essere inseriti come bordi.
Autorizzazioni
È richiesta l'autorizzazione INSERT per la tabella di destinazione.
Le autorizzazioni INSERT vengono assegnate per impostazione predefinita ai membri del ruolo predefinito del server sysadmin e ai membri dei ruoli predefiniti del database db_owner e db_datawriter nonché al proprietario della tabella. I membri dei ruoli sysadmin, db_owner, e db_securityadmin e il proprietario della tabella possono trasferire le autorizzazioni ad altri utenti.
Per eseguire INSERT con l'opzione BULK della funzione OPENROWSET, è necessario essere un membro del ruolo predefinito del server sysadmin o bulkadmin.
Esempi
R. INSERT nella tabella nodi
Nell'esempio seguente viene creata una Person
tabella node e vengono inserite due righe in tale tabella.
-- 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. INSERT nella tabella bordi
Nell'esempio seguente viene creata una friend
tabella archi e viene inserito un bordo nella tabella.
-- 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');