INSERT (SQL-Graph)
Gilt für: SQL Server 2017 (14.x) und höher Azure SQL-Datenbank Azure SQL Managed Instance
Fügt einer node
- oder edge
-Tabelle in SQL Server mindestens eine Zeile hinzu.
Transact-SQL-Syntaxkonventionen
INSERT Into node table syntax
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 Artikel werden Argumente im Zusammenhang mit SQL Graph beschrieben. Eine vollständige Liste und Beschreibung der unterstützten Argumente in INSERT-Anweisung finden Sie unter INSERT TABLE (Transact-SQL).For a full list and description of supported arguments in INSERT statement, see 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.
MATCH
search_condition_with_match Klausel kann in einer Unterabfrage verwendet werden, während sie in einen Knoten oder eine Randtabelle eingefügt wird. Informationen zur Anweisungssyntax finden Sie unter GRAPH MATCH (Transact-SQL).For MATCH
statement syntax, see GRAPH MATCH (Transact-SQL).
graph_search_pattern Suchmuster, das als MATCH
Teil des Graph-Prädikats bereitgestellt wird.
edge_table_column_list Benutzer müssen Werte für $from_id
und $to_id
beim Einfügen in einen Rand bereitstellen. Ein Fehler wird zurückgegeben, wenn kein Wert angegeben wird oder NULLs in diese Spalten eingefügt werden.
Hinweise
- Das Einfügen in eine Knotentabelle entspricht dem Einfügen in eine relationale Tabelle. Werte für die
$node_id
Spalte werden automatisch generiert. - Während Sie Zeilen in eine Randtabelle einfügen, müssen Sie Werte für
$from_id
und$to_id
Spalten 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 zwei Zeilen 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
Randtabelle erstellt und eine Kante in die 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');