CREATE TABLE (SQL Graph)

S’applique à : SQL Server 2017 (14.x) et versions ultérieures Azure SQL Managed Instance

Crée une table graphique SQL en tant que table NODE ou EDGE.

Notes

Pour plus d’informations sur les instructions Transact-SQL standard, consultez CREATE TABLE (Transact-SQL).

Conventions de la syntaxe Transact-SQL

Syntaxe

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 )

Arguments

Ce document répertorie uniquement les arguments appartenant à un graphe SQL. Pour obtenir la liste complète des arguments pris en charge et leur description, consultez CREATE TABLE (Transact-SQL).

database_name
Nom de la base de données dans laquelle la table est créée. database_name doit spécifier le nom d’une base de données existante. Si aucun nom n’est spécifié, database_name correspond par défaut à la base de données actuelle. Le nom d’accès de la connexion actuelle doit être associé à un ID d’utilisateur existant dans la base de données spécifiée par database_name, et cet ID d’utilisateur doit disposer des autorisations CREATE TABLE.

schema_name
Nom du schéma auquel appartient la nouvelle table.

table_name
Est le nom de la table de nœuds ou d’arêtes. Les noms de tables doivent respecter les règles applicables aux identificateurs. table_name peut comprendre un maximum de 128 caractères, à l’exception des noms de tables temporaires locales (noms précédés du signe #) qui ne peuvent pas dépasser 116 caractères.

NODE
Crée une table de nœuds.

EDGE
Crée une table d’arêtes.

table_constraint
Spécifie les propriétés d’une contrainte PRIMARY KEY, UNIQUE, FOREIGN KEY, CONNECTION ou CHECK, ou d’une définition DEFAULT ajoutée à une table.

Notes

La contrainte CONNECTION ne s’applique qu’à un type de table d’arêtes.

ON { partition_scheme | filegroup | "default" }
Spécifie le schéma de partition ou groupe de fichiers dans lequel la table est stockée. Si partition_scheme est spécifié, la table est partitionnée avec des partitions stockées dans un ensemble d’un ou de plusieurs groupes de fichiers spécifié dans partition_scheme. Si filegroup est spécifié, la table est stockée dans le groupe de fichiers nommé. Le groupe de fichiers doit exister dans la base de données. Si "default" est spécifié, ou si ON n’est pas spécifié du tout, la table est stockée dans le groupe de fichiers par défaut. Le mécanisme de stockage d'une table tel que spécifié dans CREATE TABLE ne peut plus être modifié ultérieurement.

ON {partition_scheme | filegroup | "default"}
Peut également être spécifié dans une contrainte PRIMARY KEY ou UNIQUE. Ces contraintes créent des index. Si le groupe de fichiers est spécifié, l’index est stocké dans le groupe de fichiers nommé. Si "default" est spécifié, ou si ON n’est pas spécifié du tout, l’index est stocké dans le même groupe de fichiers que la table. Si la contrainte PRIMARY KEY ou UNIQUE crée un index cluster, les pages de données de la table sont stockées dans le même groupe de fichiers que l'index. Si CLUSTERED est spécifié ou la contrainte crée un index cluster d’une autre manière, et qu’une valeur partition_scheme est spécifiée qui diffère des valeurs partition_scheme ou le groupe de fichiers de la définition de table, ou vice versa, seule la définition de la contrainte sera honorée et l’autre sera ignorée.

Remarques

Le création d’une table temporaire en tant que nœud ou table d’arêtes n’est pas prise en charge.

Le création d’une table de nœuds ou d’arêtes temporelle n’est pas prise en charge.

L’utilisation de Stretch Database n’est pas prise en charge pour les tables de nœuds et d’arêtes.

Important

Stretch Database est déprécié dans SQL Server 2022 (16.x) et Azure SQL Database. Cette fonctionnalité sera supprimée dans une version future de moteur de base de données. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.

Les tables de nœuds et d’arêtes ne peuvent pas être des tables externes (aucune prise en charge PolyBase pour les tables de graphe).

Une table de nœuds/arêtes de graphique non partitionnée ne peut pas devenir une table de nœuds/arêtes de graphique partitionnée.

Exemples

R. Créer une table NODE

L’exemple suivant montre comment créer une table NODE.

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

B. Créer une table EDGE

Les exemples suivants montrent comment créer des tables 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;

L’exemple suivant modélise la règle selon laquelle seules des personnes peuvent être amies avec d’autres personnes. En d’autres termes, cette arête n’autorise pas les références à des nœuds autres que 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;

Voir aussi

ALTER TABLE table_constraint
ALTER TABLE (Transact-SQL)
INSERT (SQL Graph)]
Traitement des graphes avec SQL Server 2017