適用対象: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

SQL ServerSQL Server で、1 つまたは複数の行をnodeedgeに追加します。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-SQL 構文表記規則Article 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 ] ]  
        [ 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] )

    <node_alias> { { <-( <edge_alias> )- | -( <edge_alias> )-> } <node_alias> }

<edge_table_column_list> ::=
    ($from_id, $to_id, [column_list])


このドキュメントでは、SQL グラフに関連する引数について説明します。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)

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. 値が指定されていないか、null がこれらの列に挿入された場合、エラーが返されます。An error will be returned if a value isn't provided or NULLs are inserted into these columns.


ノードへの挿入は、すべてのリレーショナル テーブルへの挿入と同じです。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 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.


対象のテーブルに対する 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. sysadmindb_owner、および db_securityadmin ロールのメンバー、およびテーブル所有者は、他のユーザーに権限を譲渡できます。Members of the sysadmin, db_owner, and the db_securityadmin roles, and the table owner can transfer permissions to other users.

OPENROWSET 関数の BULK オプションで INSERT を実行するには、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.


A.A. ノード テーブルへの挿入Insert into node table

次の例では、Person のノードを作成し、2 つの行をテーブルに挿入します。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 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

SQL Server 2017 でのグラフ処理Graph processing with SQL Server 2017