CREATE TABLE (SQL Graph)

Aplica-se a: SQL Server 2017 (14.x) e versões posteriores Instância Gerenciada de SQL do Azure

Cria uma nova tabela do SQL Graph como uma tabela de NODE ou de EDGE.

Observação

Para obter as instruções Transact-SQL padrão, confira CREATE TABLE (Transact-SQL).

Convenções de sintaxe de Transact-SQL

Sintaxe

CREATE TABLE   
    { database_name.schema_name.table_name | schema_name.table_name | table_name }
    ( { <column_definition> } 
       | <computed_column_definition>
       | <column_set_definition>
       | [ <table_constraint> ] [ ,... n ]
       | [ <table_index> ] }
          [ ,...n ]
    )   
    AS [ NODE | EDGE ]
    [ ON { partition_scheme_name ( partition_column_name )
           | filegroup
           | "default" } ]
[ ; ] 

< table_constraint > ::=
[ CONSTRAINT constraint_name ]
{
    { PRIMARY KEY | UNIQUE }
        [ CLUSTERED | NONCLUSTERED ]
        (column [ ASC | DESC ] [ ,...n ] )
        [
            WITH FILLFACTOR = fillfactor
           |WITH ( <index_option> [ , ...n ] )
        ]
        [ ON { partition_scheme_name (partition_column_name)
            | filegroup | "default" } ]
    | FOREIGN KEY
        ( column [ ,...n ] )
        REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ]
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
        [ NOT FOR REPLICATION ]
    | CONNECTION
        ( { node_table TO node_table } 
          [ , {node_table TO node_table }]
          [ , ...n ]
        )
        [ ON DELETE { NO ACTION | CASCADE } ]
    | CHECK [ NOT FOR REPLICATION ] ( logical_expression )

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

Este documento lista apenas os argumentos que pertencem ao SQL Graph. Para obter uma lista completa e a descrição dos argumentos com suporte, confira CREATE TABLE (Transact-SQL)

database_name
É o nome do banco de dados no qual a tabela é criada. database_name precisa especificar o nome de um banco de dados existente. Caso não seja especificado, database_name usará o banco de dados atual como padrão. O logon para a conexão atual precisa estar associado a uma ID de usuário existente no banco de dados especificado por database_name, e essa ID de usuário precisa ter permissões CREATE TABLE.

schema_name
É o nome do esquema ao qual a nova tabela pertence.

table_name
É o nome da tabela de borda ou de nó. Os nomes de tabela precisam seguir as regras para identificadores. table_name pode ter no máximo 128 caracteres, exceto para nomes de tabelas temporárias locais [nomes com o prefixo de sinal numérico (#)], que não podem exceder 116 caracteres.

NODE
Cria uma tabela de nó.

EDGE
Cria uma tabela de borda.

table_constraint
Especifica as propriedades de uma restrição PRIMARY KEY, UNIQUE, FOREIGN KEY, CONNECTION ou CHECK ou uma definição DEFAULT adicionada a uma tabela.

Observação

A restrição CONNECTION aplica-se somente a um tipo de tabela de borda.

ON { partition_scheme | filegroup | "default" }
Especifica o esquema de partição ou grupo de arquivos no qual a tabela é armazenada. Se partition_scheme for especificado, a tabela será uma tabela particionada cujas partições são armazenadas em um conjunto de um ou mais grupos de arquivos especificados em partition_scheme. Se filegroup for especificado, a tabela será criada no grupo de arquivos nomeado. O grupo de arquivos deve existir no banco de dados. Se "default" é especificado ou se ON não é especificado, a tabela é armazenada no grupo de arquivos padrão. O mecanismo de armazenamento de uma tabela como especificado em CREATE TABLE não pode ser alterado posteriormente.

ON {partition_scheme | filegroup | "default"}
Também pode ser especificado em uma restrição PRIMARY KEY ou UNIQUE. Essas restrições criam índices. Se filegroup for especificado, o índice será armazenado no grupo de arquivos nomeado. Se "default" é especificado ou se ON não é especificado, o índice é armazenado no mesmo grupo de arquivos da tabela. Se a restrição PRIMARY KEY ou UNIQUE criar um índice clusterizado, as páginas de dados da tabela serão armazenadas no mesmo grupo de arquivos que o índice. Se CLUSTERED for especificado ou se a restrição, de outro modo, criar um índice clusterizado e for especificado um partition_scheme diferente do partition_scheme ou do filegroup da definição da tabela ou vice-versa, somente a definição da restrição será respeitada, sendo as demais ignoradas.

Comentários

Não há suporte para a criação de uma tabela temporária como uma tabela de nó ou de borda.

Não há suporte para a criação de uma tabela de borda ou de nó como uma tabela temporal.

O Stretch Database não é compatível com a tabela de borda ou de nó.

Importante

O banco de dados de ampliação foi preterido no SQL Server 2022 (16.x) e no Banco de Dados SQL do Azure. Esse recurso será removido em uma versão futura do mecanismo de banco de dados. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.

As tabelas de borda ou de nó não podem ser tabelas externas (o PolyBase não dá suporte para tabelas de grafo).

Uma tabela de borda/nó de grafo não particionada não pode ser alterada para uma tabela de borda/nó de grafo particionada.

Exemplos

a. Criar uma tabela de NODE

O exemplo a seguir mostra como criar uma tabela de NODE

 CREATE TABLE Person (
        ID INTEGER PRIMARY KEY, 
        name VARCHAR(100), 
        email VARCHAR(100)
 ) AS NODE;

B. Criar uma tabela de EDGE

Os exemplos a seguir mostram como criar tabelas de EDGE

 CREATE TABLE friends (
    id INTEGER PRIMARY KEY,
    start_date DATe
 ) AS EDGE;
 -- Create a likes edge table, this table does not have any user defined attributes   
 CREATE TABLE likes AS EDGE;

O exemplo a seguir mostra uma regra em que apenas pessoas podem ser amigas de outras pessoas, o que significa que esta borda não permite a referência a nenhum nó que não seja Person.

/* Create friend edge table with CONSTRAINT, restricts for nodes and it direction */
CREATE TABLE dbo.FriendOf(
  CONSTRAINT cnt_Person_FriendOf_Person
    CONNECTION (dbo.Person TO dbo.Person) 
)AS EDGE;

Consulte Também

ALTER TABLE table_constraint
ALTER TABLE (Transact-SQL)
INSERT (SQL Graph)]
Processamento de grafo com o SQL Server 2017