INSERT (SQL Graph)INSERT (SQL Graph)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure nãoAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Adiciona uma ou mais linhas a uma tabela node ou edge do SQL ServerSQL Server.Adds one or more rows to a node or edge table in SQL ServerSQL Server.

Observação

Para obter instruções Transact-SQL padrão, consulte INSERT TABLE (Transact-SQL).For standard Transact-SQL statements, see INSERT TABLE (Transact-SQL).

Ícone de link do artigo Convenções de sintaxe do Transact-SQLArticle link icon Transact-SQL Syntax Conventions

Sintaxe de INSERT na tabela NodeINSERT Into Node Table Syntax

A sintaxe para inserção em uma tabela Node é a mesma de uma tabela normal.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])

ArgumentosArguments

Este documento descreve os argumentos relativos ao SQL Graph.This document describes arguments related to SQL graph. Para obter uma lista completa e a descrição de argumentos compatíveis com a instrução INSERT, consulte INSERT TABLE (Transact-SQL)For a full list and description of supported arguments in INSERT statement, see INSERT TABLE (Transact-SQL)

INTOINTO
É uma palavra-chave opcional que pode ser usada entre INSERT e a tabela de destino.Is an optional keyword that can be used between INSERT and the target table.

search_condition_with_match search_condition_with_match
A cláusula MATCH pode ser usada em uma subconsulta durante a inserção em uma tabela de borda ou nó.MATCH clause can be used in a subquery while inserting into a node or edge table. Para obter a sintaxe da instrução MATCH, consulte GRAPH MATCH (Transact-SQL)For MATCH statement syntax, see GRAPH MATCH (Transact-SQL)

graph_search_pattern graph_search_pattern
Padrão de pesquisa fornecido para a cláusula MATCH como parte do predicado de gráfico.Search pattern provided to MATCH clause as part of the graph predicate.

edge_table_column_list edge_table_column_list
Os usuários devem fornecer valores para $from_id e $to_id ao fazer uma inserção em uma borda.Users must provide values for $from_id and $to_id while inserting into an edge. Um erro será retornado se não um valor não for fornecido ou se valores NULL forem inseridos nessas colunas.An error will be returned if a value isn't provided or NULLs are inserted into these columns.

RemarksRemarks

A inserção em um nó é igual à inserção em qualquer tabela relacional.Inserting into a node is same as inserting into any relational table. Os valores da coluna $node_id são gerados automaticamente.Values for the $node_id column are automatically generated.

Ao fazer uma inserção em uma tabela de borda, os usuários devem fornecer valores para as colunas $from_id e $to_id.While inserting into an edge table, users must provide values for $from_id and $to_id columns.

A BULK INSERT para a tabela de nó é a mesma que a de uma tabela relacional.BULK insert for node table is the same as for a relational table.

Antes da inserção em massa em uma tabela de borda, as tabelas de nó devem ser importadas.Before bulk inserting into an edge table, the node tables must be imported. Em seguida, os valores para $from_id e $to_id podem ser extraídos da coluna $node_id da tabela de nó e inseridos como bordas.Values for $from_id and $to_id can then be extracted from the $node_id column of the node table and inserted as edges.

PermissõesPermissions

A permissão INSERT é necessária na tabela de destino.INSERT permission is required on the target table.

As permissões INSERT usam como padrão os membros da função de servidor fixa sysadmin, as funções de banco de dados fixa db_owner e db_datawriter e o proprietário da tabela.INSERT permissions default to members of the sysadmin fixed server role, the db_owner and db_datawriter fixed database roles, and the table owner. Os membros das funções sysadmin, db_owner e db_securityadmin e o proprietário da tabela podem transferir permissões para outros usuários.Members of the sysadmin, db_owner, and the db_securityadmin roles, and the table owner can transfer permissions to other users.

Para executar INSERT com a opção BULK da função OPENROWSET, você precisa ser membro da função de servidor fixa sysadmin ou 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.

ExemplosExamples

A.A. Inserir na tabela de nóInsert into node table

O exemplo a seguir cria uma tabela de nó Person e insere duas linhas nessa tabela.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. Inserir na tabela de bordaInsert into edge table

O exemplo a seguir cria uma tabela de borda de amigo e insere uma borda na tabela.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');

Consulte TambémSee Also

INSERT TABLE (Transact-SQL) INSERT TABLE (Transact-SQL)
Processamento de grafo com o SQL Server 2017Graph processing with SQL Server 2017