INSERT (граф SQL)INSERT (SQL Graph)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server 2017 и более поздних версий даБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data Warehouse APPLIES TO: yesSQL Server 2017 and later yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Добавляет одну или несколько строк в таблицу node или edge в SQL ServerSQL Server.Adds one or more rows to a node or edge table in SQL ServerSQL Server.

Примечание

Сведения о стандартных инструкциях Transact-SQL см. в разделе INSERT TABLE (Transact-SQL).For standard Transact-SQL statements, see INSERT TABLE (Transact-SQL).

Значок ссылки на статью Синтаксические обозначения в Transact-SQLArticle link icon Transact-SQL Syntax Conventions

Синтаксис INSERT (вставки) в таблицу узловINSERT Into Node Table Syntax

Синтаксис вставки в таблицу узлов совпадает с синтаксисом ставки в обычную таблицу.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])

АргументыArguments

В этом документе описываются только аргументы, относящиеся к SQL Graph.This document describes arguments related to SQL graph. Полный список и описание поддерживаемых аргументов в инструкции INSERT см. в разделе INSERT TABLE (Transact-SQL).For a full list and description of supported arguments in INSERT statement, see INSERT TABLE (Transact-SQL)

INTOINTO
Необязательное ключевое слово, которое можно использовать между INSERT и целевой таблицей.Is an optional keyword that can be used between INSERT and the target table.

search_condition_with_match search_condition_with_match
Предложение MATCH можно использовать во вложенном запросе при вставке в таблицу узлов или граничную таблицу.MATCH clause can be used in a subquery while inserting into a node or edge table. Сведения о синтаксисе инструкции MATCH см. в разделе GRAPH MATCH (Transact-SQL)For MATCH statement syntax, see GRAPH MATCH (Transact-SQL)

graph_search_pattern graph_search_pattern
Шаблон поиска для предложения MATCH как часть предиката графа.Search pattern provided to MATCH clause as part of the graph predicate.

edge_table_column_list edge_table_column_list
При вставке в граничную таблицу пользователи должны указать значения для $from_id и $to_id.Users must provide values for $from_id and $to_id while inserting into an edge. Если в эти столбцы вставлены пустые значения или значения не указаны, будет возвращена ошибка.An error will be returned if a value isn't provided or NULLs are inserted into these columns.

RemarksRemarks

Вставка в таблицу узлов аналогична вставке в любую реляционную таблицу.Inserting into a node is same as inserting into any relational table. Значения для столбца node_id $ создаются автоматически.Values for the $node_id column are automatically generated.

При вставке в граничную таблицу пользователи должны указать значения для столбцов $from_id и $to_id.While inserting into an edge table, users must provide values for $from_id and $to_id columns.

Операция вставки с параметром BULK в таблицу узлов аналогична вставке в реляционную таблицу.BULK insert for node table is the same as for a relational table.

Перед массовой вставкой в граничную таблицу необходимо импортировать таблицы узлов.Before bulk inserting into an edge table, the node tables must be imported. Затем значения для $from_id и $to_id можно извлечь из столбца $node_id таблицы узлов и вставить в виде границ.Values for $from_id and $to_id can then be extracted from the $node_id column of the node table and inserted as edges.

РазрешенияPermissions

Требуется разрешение INSERT на целевую таблицу.INSERT permission is required on the target table.

Разрешения INSERT назначаются по умолчанию членам предопределенной роли сервера sysadmin, предопределенных ролей базы данных db_owner и db_datawriter, а также владельцу таблицы.INSERT permissions default to members of the sysadmin fixed server role, the db_owner and db_datawriter fixed database roles, and the table owner. Члены ролей sysadmin, db_owner и db_securityadmin, а также владелец таблицы могут передавать разрешения другим пользователям.Members of the sysadmin, db_owner, and the db_securityadmin roles, and the table owner can transfer permissions to other users.

Чтобы выполнить инструкцию INSERT с параметром BULK функции OPENROWSET, необходимо быть членом предопределенной роли сервера sysadmin или 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.

ПримерыExamples

A.A. Вставка в таблицу узловInsert into node table

В следующем примере создается таблица узлов Person, и затем в нее вставляются две строки.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. Вставка в граничную таблицуInsert into edge table

В следующем примере создается граничная таблица Friend, и затем в нее вставляются границы.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');

См. также:See Also

INSERT TABLE (Transact-SQL) INSERT TABLE (Transact-SQL)
Graph Processing with SQL Server 2017 (Работа с графами в SQL Server 2017)Graph processing with SQL Server 2017