Bagikan melalui


SISIPKAN (SQL Graph)

Berlaku untuk: SQL Server 2017 (14.x) dan azure SQL Database Azure SQL Managed Instance yang lebih baru

Menambahkan satu atau beberapa baris ke node tabel atau edge di SQL Server.

Konvensi sintaks transact-SQL

INSERT Ke dalam sintaks tabel simpul

Sintaks untuk menyisipkan ke dalam tabel Node sama dengan untuk tabel biasa.

[ 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])

Argumen

Catatan

Artikel ini menjelaskan argumen yang terkait dengan grafik SQL. Untuk daftar lengkap dan deskripsi argumen yang didukung dalam pernyataan INSERT, lihat INSERT TABLE (Transact-SQL). Untuk pernyataan Transact-SQL standar, lihat INSERT TABLE (Transact-SQL).

INTO

Adalah kata kunci opsional yang dapat digunakan antara INSERT dan tabel target.

MATCH klausa search_condition_with_match dapat digunakan dalam subkueri saat menyisipkan ke dalam tabel simpul atau tepi. Untuk MATCH sintaks pernyataan, lihat GRAPH MATCH (Transact-SQL).

graph_search_pattern Pola pencarian disediakan untuk MATCH klausul sebagai bagian dari predikat grafik.

edge_table_column_list Pengguna harus menyediakan nilai untuk $from_id dan $to_id saat menyisipkan ke tepi. Kesalahan dikembalikan jika nilai tidak disediakan atau NULL disisipkan ke dalam kolom ini.

Keterangan

  • Menyisipkan ke dalam simpul sama dengan menyisipkan ke dalam tabel relasional apa pun. Nilai untuk $node_id kolom dibuat secara otomatis.
  • Saat Anda menyisipkan baris ke dalam tabel tepi, Anda harus menyediakan nilai untuk $from_id kolom dan $to_id .
  • Penyisipan MASSAL untuk tabel simpul sama dengan untuk tabel relasional.
  • Sebelum menyisipkan secara massal ke dalam tabel edge, tabel simpul harus diimpor. Nilai untuk $from_id dan $to_id kemudian dapat diekstrak dari $node_id kolom tabel simpul dan disisipkan sebagai tepi.

Izin

Izin INSERT diperlukan pada tabel target.

Izin INSERT default untuk anggota peran server tetap sysadmin , peran database tetap db_owner dan db_datawriter , dan pemilik tabel. Anggota peran sysadmin, db_owner, dan db_securityadmin , dan pemilik tabel dapat mentransfer izin ke pengguna lain.

Untuk menjalankan INSERT dengan opsi OPENROWSET function BULK, Anda harus menjadi anggota peran server tetap sysadmin atau peran server tetap bulkadmin .

Contoh

J. Sisipkan ke dalam tabel simpul

Contoh berikut membuat Person tabel simpul dan menyisipkan dua baris ke dalam tabel tersebut.

-- 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. Sisipkan ke tabel tepi

Contoh berikut membuat friend tabel edge dan menyisipkan tepi ke dalam tabel.

-- 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');

Langkah berikutnya