INSERT (grafo SQL)INSERT (SQL Graph)

SI APPLICA A: sìSQL Server sìDatabase SQL di Azure noAzure SQL Data Warehouse noParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Consente di aggiungere una o più righe a una tabella node o edge in SQL ServerSQL Server.Adds one or more rows to a node or edge table in SQL ServerSQL Server.

Nota

Per istruzioni Transact-SQL standard, vedere INSERT TABLE (Transact-SQL).For standard Transact-SQL statements, see INSERT TABLE (Transact-SQL).

Icona di collegamento a un articoloConvenzioni della sintassi Transact-SQLArticle link icon Transact-SQL Syntax Conventions

INSERT nella sintassi della tabella nodiINSERT Into Node Table Syntax

La sintassi per l'inserimento in una tabella nodi è uguale a quella usata per una normale tabella.The syntax for inserting into a Node table is the same as for a regular table.

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

ArgomentiArguments

Questo documento descrive gli argomenti relativi al grafo SQL.This document describes arguments related to SQL graph. Per un elenco completo e una descrizione di argomenti supportati nell'istruzione INSERT, vedere INSERT TABLE (Transact-SQL)For a full list and description of supported arguments in INSERT statement, see INSERT TABLE (Transact-SQL)

INTOINTO
Parola chiave facoltativa che può essere specificata tra INSERT e la tabella di destinazione.Is an optional keyword that can be used between INSERT and the target table.

search_condition_with_match search_condition_with_match
La clausola MATCH può essere usata in una sottoquery durante l'inserimento in una tabella nodi o bordi.MATCH clause can be used in a subquery while inserting into a node or edge table. Per la sintassi dell'istruzione MATCH, vedere GRAPH MATCH (Transact-SQL)For MATCH statement syntax, see GRAPH MATCH (Transact-SQL)

graph_search_pattern graph_search_pattern
Criterio di ricerca specificato per la clausola MATCH come parte del predicato del grafo.Search pattern provided to MATCH clause as part of the graph predicate.

edge_table_column_list edge_table_column_list
Gli utenti devono specificare valori per $from_id e $to_id durante l'inserimento in un bordo.Users must provide values for $from_id and $to_id while inserting into an edge. Se in queste colonne non viene specificato alcun valore o se vengono inseriti valori Null, viene restituito un errore.An error will be returned if a value isn't provided or NULLs are inserted into these columns.

RemarksRemarks

L'inserimento in un nodo corrisponde all'inserimento in qualsiasi tabella relazionale.Inserting into a node is same as inserting into any relational table. I valori per la colonna $node_id vengono generati automaticamente.Values for the $node_id column are automatically generated.

Quando eseguono l'inserimento in una tabella bordi, gli utenti devono specificare valori per le colonne $from_id e $to_id.While inserting into an edge table, users must provide values for $from_id and $to_id columns.

L'inserimento bulk per la tabella nodi è identico a quello di una tabella relazionale.BULK insert for node table is the same as for a relational table.

Prima dell'inserimento bulk in una tabella bordi, è necessario importare le tabelle nodi.Before bulk inserting into an edge table, the node tables must be imported. I valori di $from_id e $to_id possono essere estratti dalla colonna $node_id della tabella nodi ed essere inseriti come bordi.Values for $from_id and $to_id can then be extracted from the $node_id column of the node table and inserted as edges.

AutorizzazioniPermissions

È richiesta l'autorizzazione INSERT per la tabella di destinazione.INSERT permission is required on the target table.

Le autorizzazioni INSERT vengono assegnate per impostazione predefinita ai membri del ruolo predefinito del server sysadmin e ai membri dei ruoli predefiniti del database db_owner e db_datawriter nonché al proprietario della tabella.INSERT permissions default to members of the sysadmin fixed server role, the db_owner and db_datawriter fixed database roles, and the table owner. I membri dei ruoli sysadmin, db_owner e db_securityadmin e il proprietario della tabella possono trasferire le autorizzazioni ad altri utenti.Members of the sysadmin, db_owner, and the db_securityadmin roles, and the table owner can transfer permissions to other users.

Per eseguire INSERT con l'opzione BULK della funzione OPENROWSET, è necessario essere un membro del ruolo predefinito del server sysadmin o bulkadmin.To execute INSERT with the OPENROWSET function BULK option, you must be a member of the sysadmin fixed server role or of the bulkadmin fixed server role.

EsempiExamples

A.A. INSERT nella tabella nodiInsert into node table

Nell'esempio seguente viene creata una tabella nodi di persone in cui vengono inserite due righe.The following example creates a Person node table and inserts two rows into that table.

-- 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.B. INSERT nella tabella bordiInsert into edge table

Nell'esempio seguente viene creata una tabella bordi di amici in cui viene inserito un bordo.The following example creates a friend edge table and inserts an edge into the table.

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

Vedere ancheSee Also

INSERT TABLE (Transact-SQL) INSERT TABLE (Transact-SQL)
Graph Processing with SQL Server 2017 (Elaborazione di grafi con SQL Server 2017)Graph processing with SQL Server 2017