适用于: SQL Server 2017 (14.x) 及更高版本 
Azure SQL 数据库
Azure SQL 托管实例
 Microsoft Fabric 预览版中的 SQL 数据库
向 node 中的 edge 或 SQL Server 表格添加一行或多行。
INSERT Into 节点表语法
插入节点表的语法与插入常规表的语法相同。
[ 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
Note
本文介绍与 SQL 图形相关的参数。 有关 INSERT 语句中支持参数的完整列表和说明,请参阅 INSERT TABLE (Transact-SQL)。 有关标准 TRANSACT-SQL 语句,请参阅 INSERT TABLE (Transact-SQL)。
INTO
一个可选的关键字,可将它用在 INSERT 和目标表之间。
              
              
              MATCH在插入节点或边缘表中时,可以在子查询中使用search_condition_with_match子句。 有关MATCH语句语法,请参阅 GRAPH MATCH (Transact-SQL)。
              
               graph_search_pattern作为图形谓词的一部分提供给MATCH子句的搜索模式。
              
               edge_table_column_list用户必须在插入边缘时提供值$from_id$to_id。 如果未提供值或 NUL 插入到这些列中,则返回错误。
Remarks
- 插入节点表与插入任何关系表相同。 
              $node_id自动生成列的值。
- 在边缘表中插入行时,必须提供值 $from_id和$to_id列。
- 节点表的 BULK 插入与关系表的 BULK 插入相同。
- 批量插入边缘表之前,必须导入节点表。 然后才可从节点表的 $from_id列中提取$to_id和$node_id的值,并将其作为边插入。
- 在 Fabric SQL 数据库中,允许 SQL Graph,但 Node 和 Edge 表不会镜像到 Fabric OneLake。
Permissions
需要对目标表具有 INSERT 权限。
默认情况下,将 INSERT 权限授予 sysadmin 固定服务器角色成员、db_owner 和 db_datawriter 固定数据库角色成员以及表所有者 。 sysadmin、db_owner 和 db_securityadmin 角色成员和表所有者可以将权限转让给其他用户 。
若要使用 OPENROWSET 函数 BULK 选项执行 INSERT,必须是 sysadmin 固定服务器角色成员或 bulkadmin 固定服务器角色成员 。
Examples
A. 插入节点表
以下示例创建一个 Person 节点表,并将两行插入该表。
-- 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. 插入边缘表
以下示例创建一个 friend 边缘表,并将一个边缘插入表中。
-- 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');