Partage via


INSERT (SQL Graph)

S’applique à : SQL Server 2017 (14.x) et versions ultérieures Azure SQL Database Azure SQL Managed Instance

Ajoute une ou plusieurs lignes à une table node ou edge dans SQL Server.

Conventions de la syntaxe Transact-SQL

Syntaxe insert into node table

La syntaxe permettant d’effectuer une insertion dans une table de nœuds est la même que celle utilisée pour une table standard.

[ 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

Remarque

Cet article décrit les arguments liés au graphe SQL. Pour obtenir la liste complète et la description des arguments pris en charge dans l’instruction INSERT, consultez INSERT TABLE (Transact-SQL). Pour en savoir plus sur les instructions Transact-SQL standard, consultez INSERT TABLE (Transact-SQL).

INTO

Mot clé facultatif qui peut être utilisé entre INSERT et la table cible.

MATCH search_condition_with_match clause peut être utilisée dans une sous-requête lors de l’insertion dans un nœud ou une table de bord. Pour MATCH obtenir la syntaxe des instructions, consultez GRAPH MATCH (Transact-SQL).

graph_search_pattern modèle de recherche fourni à MATCH la clause dans le cadre du prédicat de graphe.

edge_table_column_list Les utilisateurs doivent fournir des valeurs pour $from_id et $to_id lors de l’insertion dans un bord. Une erreur est retournée si une valeur n’est pas fournie ou si des valeurs NULL sont insérées dans ces colonnes.

Notes

  • Une insertion dans un nœud équivaut à une insertion dans une table relationnelle. Les valeurs de la $node_id colonne sont générées automatiquement.
  • Pendant que vous insérez des lignes dans une table de bord, vous devez fournir des valeurs pour et $to_id des $from_id colonnes.
  • Une insertion en bloc (BULK) dans une table de nœuds s’effectue de la même façon que dans une table relationnelle.
  • Avant de procéder à une insertion en bloc dans une table d’arêtes, les tables de nœuds doivent être importées. Les valeurs pour $from_id et $to_id peuvent ensuite être extraites de la colonne $node_id de la table de nœuds, puis insérées comme arêtes.

Autorisations

L'autorisation INSERT est obligatoire sur la table cible.

Les autorisations INSERT sont accordées par défaut aux membres du rôle serveur fixe sysadmin, aux rôles de base de données fixes db_owner et db_datawriter, ainsi qu’au propriétaire de la table. Les membres des rôles sysadmin, db_owner et db_securityadmin et le propriétaire de la table peuvent transférer des autorisations à d’autres utilisateurs.

Pour exécuter INSERT avec l’option BULK de la fonction OPENROWSET, vous devez être membre du rôle serveur fixe sysadmin ou bulkadmin.

Exemples

R. Insertion dans une table de nœuds

L’exemple suivant crée une Person table de nœuds et insère deux lignes dans cette 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. Insertion dans une table d’arêtes

L’exemple suivant crée une friend table de bord et insère un bord dans la 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');

Étapes suivantes