Sdílet prostřednictvím


Příkaz INSERT (SQL graf)

Platí pro: SQL Server 2017 (14.x) a novější verze databáze SQL Azure SQL DatabaseAzure SQL Managed Instancev Microsoft Fabric

Přidá jeden nebo více řádků do node nebo edge tabulky v SQL Serveru.

Transact-SQL konvence syntaxe

Syntaxe tabulky VLOŽIT do uzlu

Syntaxe pro vložení do tabulky Node je stejná jako u běžné tabulky.

[ 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

Tento článek popisuje argumenty související s grafem SQL. Úplný seznam a popis podporovaných argumentů v příkazu INSERT naleznete v tématu INSERT TABLE (Transact-SQL). Standardní příkazy Transact-SQL naleznete v tématu INSERT TABLE (Transact-SQL).

INTO

Je volitelné klíčové slovo, které lze použít mezi INSERT a cílovou tabulkou.

MATCH search_condition_with_match klauzule se dá použít v poddotazu při vkládání do uzlu nebo hraniční tabulky. Syntaxi MATCH příkazů najdete v tématu GRAPH POZVYHLEDAT (Transact-SQL).

graph_search_pattern Vzor hledání poskytnutý klauzuli MATCH jako součást predikátu grafu.

edge_table_column_list Uživatelé musí zadat hodnoty pro $from_id vložení do hraničních zařízení a $to_id při jejich vkládání do hraničních zařízení. Pokud není zadána hodnota nebo jsou do těchto sloupců vloženy hodnoty NULL, vrátí se chyba.

Remarks

  • Vložení do uzlu je stejné jako vložení do jakékoli relační tabulky. Hodnoty pro $node_id sloupec se generují automaticky.
  • Při vkládání řádků do hraniční tabulky je nutné zadat hodnoty pro $from_id a $to_id sloupce.
  • BULK insert pro uzlovou tabulku je stejný jako pro relační tabulku.
  • Před hromadným vložením do hraniční tabulky je nutné importovat tabulky uzlů. Hodnoty pro $from_id a $to_id pak je možné extrahovat ze $node_id sloupce tabulky uzlů a vložit je jako hrany.
  • V databázi SQL Fabric je sql Graph povolený, ale tabulky Node a Edge se nebudou zrcadlit na Fabric OneLake.

Permissions

V cílové tabulce se vyžaduje oprávnění INSERT.

Oprávnění INSERT jsou výchozí pro členy pevné role serveru správce systému , db_owner a db_datawriter pevné databázové role a vlastníka tabulky. Členové správce systému, db_owner a role db_securityadmin a vlastník tabulky mohou přenášet oprávnění jiným uživatelům.

Chcete-li spustit příkaz INSERT s funkcí BULK, musíte být členem pevné role serveru sysadmin nebo pevné role serveru bulkadmin .

Examples

A. Vložení do tabulky uzlů

Následující příklad vytvoří Person tabulku uzlů a vloží do této tabulky dva řádky.

-- 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. Vložení do hraniční tabulky

Následující příklad vytvoří friend hraniční tabulku a vloží okraj do tabulky.

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

Další kroky