Delen via


Invoegen (SQL Graph)

Van toepassing op: SQL Server 2017 (14.x) en latere versies Van Azure SQL DatabaseAzure SQL Managed InstanceSQL Database in Microsoft Fabric Preview

Voegt een of meer rijen toe aan een node of edge meer tabellen in SQL Server.

Transact-SQL syntaxis-conventies

INSERT Into node table syntaxis

De syntaxis voor het invoegen in een Node-tabel is hetzelfde als voor een gewone tabel.

[ 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])

Arguments

Note

In dit artikel worden argumenten beschreven die betrekking hebben op SQL Graph. Zie INSERT TABLE (Transact-SQL)voor een volledige lijst en beschrijving van ondersteunde argumenten in de instructie INSERT TABLE. Zie INSERT TABLE (Transact-SQL) voor standaardinstructies voor Transact-SQL.

INTO

Is een optioneel trefwoord dat kan worden gebruikt tussen INSERT en de doeltabel.

MATCH search_condition_with_match component kan worden gebruikt in een subquery tijdens het invoegen in een knooppunt of edge-tabel. Zie GRAPH MATCH (Transact-SQL) voor MATCH de syntaxis van de instructie.

graph_search_pattern Zoekpatroon dat is opgegeven voor MATCH component als onderdeel van het graafpredicaat.

edge_table_column_list Gebruikers moeten waarden opgeven voor $from_id en $to_id tijdens het invoegen in een rand. Er wordt een fout geretourneerd als er geen waarde is opgegeven of NULL's worden ingevoegd in deze kolommen.

Remarks

  • Invoegen in een knooppunt is hetzelfde als het invoegen in een relationele tabel. Waarden voor de $node_id kolom worden automatisch gegenereerd.
  • Terwijl u rijen in een randtabel invoegt, moet u waarden voor $from_id en $to_id kolommen opgeven.
  • BULK invoegen voor knooppunttabel is hetzelfde als voor een relationele tabel.
  • Voordat u bulksgewijs invoegt in een edge-tabel, moeten de knooppunttabellen worden geïmporteerd. Waarden voor $from_id en $to_id kunnen vervolgens worden geëxtraheerd uit de $node_id kolom van de knooppunttabel en ingevoegd als randen.
  • In Fabric SQL Database is SQL Graph toegestaan, maar knooppunt- en Edge-tabellen worden niet gespiegeld naar Fabric OneLake.

Permissions

Insert-machtiging is vereist voor de doeltabel.

INSERT-machtigingen zijn standaard ingesteld op leden van de vaste serverrol sysadmin , de db_owner en db_datawriter vaste databaserollen en de eigenaar van de tabel. Leden van de systeembeheerder, db_owner en de db_securityadmin rollen en de eigenaar van de tabel kan machtigingen overdragen aan andere gebruikers.

Als u INSERT wilt uitvoeren met de functie BULK van de functie OPENROWSET, moet u lid zijn van de vaste serverfunctie sysadmin of van de vaste serverfunctie bulkadmin .

Examples

A. Invoegen in knooppunttabel

In het volgende voorbeeld wordt een Person knooppunttabel gemaakt en worden twee rijen in die tabel ingevoegd.

-- 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. Invoegen in randtabel

In het volgende voorbeeld wordt een friend randtabel gemaakt en wordt een rand in de tabel ingevoegd.

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

Next steps