Freigeben über


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');

Nächste Schritte