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