INSERT (SQL-Graph)
Gilt für: SQL Server 2017 (14.x) und höher Azure SQL-DatenbankAzure SQL Managed Instance
Fügt einer node
- oder edge
-Tabelle in SQL Server mindestens eine Zeile hinzu.
Transact-SQL-Syntaxkonventionen
INSERT INTO – Syntax für Knotentabellen
Die Syntax für das Einfügen in eine Knotentabelle entspricht der einer regulären Tabelle.
[ 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])
Argumente
Hinweis
In diesem Dokument werden Argumente für SQL-Graph beschrieben. Eine vollständige Liste und Beschreibung der unterstützten Argumente in der INSERT-Anweisung finden Sie unter INSERT TABLE (Transact-SQL). Standard Transact-SQL-Anweisungen finden Sie unter INSERT TABLE (Transact-SQL).
INTO
Ein optionales Schlüsselwort, das zwischen INSERT
und der Zieltabelle verwendet werden kann.
Die search_condition_with_matchMATCH
-Klausel kann während des Einfügens in eine Knoten- oder Edgetabelle in einer geschachtelten Abfrage verwendet werden. Die MATCH
-Abfragesyntax finden Sie unter GRAPH MATCH (Transact-SQL).
graph_search_pattern-Suchmuster, das der MATCH
-Klausel als Teil des Graph-Prädikats bereitgestellt wird.
Beim Einfügen in eine Edgetabelle müssen edge_table_column_list-Benutzer Werte für $from_id
und $to_id
angeben. Wenn kein Wert angegeben oder NULL in eine dieser Spalten eingefügt wird, wird ein Fehler zurückgegeben.
Bemerkungen
- Das Einfügen in eine Knotentabelle entspricht dem Einfügen in eine relationale Tabelle. Werte für die
$node_id
-Spalte werden automatisch generiert. - Beim Einfügen von Reihen in eine Edgetabelle müssen Benutzer Werte für die Spalten
$from_id
und$to_id
angeben. - Masseneinfügung in Knotentabellen entspricht der Masseneinfügung in eine relationale Tabelle.
- Vor der Masseneinfügung in eine Edgetabelle müssen die Knotentabellen importiert werden. Anschließend können Werte für
$from_id
und$to_id
aus der$node_id
-Spalte der Knotentabelle extrahiert werden und als Edges eingefügt werden.
Berechtigungen
Die INSERT-Berechtigung ist für die Zieltabelle erforderlich.
Mitglieder der festen Serverrolle sysadmin, der festen Datenbankrollen db_owner und db_datawriter und der Tabellenbesitzer erhalten standardmäßig INSERT-Berechtigungen. Mitglieder der Rollen sysadmin, db_owner und db_securityadmin sowie der Tabellenbesitzer können Berechtigungen an andere Benutzer übertragen.
Zum Ausführen von INSERT mit der Option BULK der OPENROWSET-Funktion müssen Sie Mitglied der festen Serverrolle sysadmin oder der festen Serverrolle bulkadmin sein.
Beispiele
A. Einfügen in Knotentabellen
Im folgenden Beispiel wird eine Person
-Knotentabelle erstellt, und es werden zwei Reihen in diese Tabelle eingefügt.
-- 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. Einfügen in Edgetabellen
Im folgenden Beispiel wird eine friend
-Edgetabelle erstellt und ein Edge in diese Tabelle eingefügt.
-- 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');
Nächste Schritte
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für