CREATE TABLE (SQL Graph)

Se aplica a: SQL Server 2017 (14.x) y versiones posteriores Azure SQL Managed Instance

Crea una tabla de SQL Graph como una tabla NODE o EDGE.

Nota

Para instrucciones Transact-SQL estándar, vea CREATE TABLE (Transact-SQL).

Convenciones de sintaxis de Transact-SQL

Sintaxis

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 )

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

En este documento solo se enumeran los argumentos pertenecientes a SQL Graph. Para obtener una lista completa y una descripción de los argumentos admitidos, vea CREATE TABLE (Transact-SQL).

database_name
Es el nombre de la base de datos en la que se crea la tabla. database_name debe especificar el nombre de una base de datos existente. Si no se especifica, database_name usa de manera predeterminada la base de datos actual. El inicio de sesión de la conexión actual debe estar asociado a un identificador de usuario existente en la base de datos especificada por database_name, y ese identificador de usuario debe tener permisos CREATE TABLE.

schema_name
Es el nombre del esquema al que pertenece la nueva tabla.

table_name
Es el nombre de la tabla de nodo o perimetral. Los nombres de las tablas deben seguir las reglas de los identificadores. table_name puede contener un máximo de 128 caracteres, excepto para los nombres de tablas temporales locales (nombres precedidos de un único signo de número, #), que no pueden superar los 116 caracteres.

NODE
Crea una tabla de nodo.

EDGE
Crea una tabla perimetral.

table_constraint
Especifica las propiedades de una restricción PRIMARY KEY, UNIQUE, FOREIGN KEY, CONNECTION o CHECK, o bien una definición DEFAULT agregada a una tabla.

Nota

La restricción CONNECTION solo se aplica a un tipo de tabla perimetral.

ON { esquema_de_partición | grupo_de_archivos | "default" }
Especifica el esquema de partición o el grupo de archivos en que se almacena la tabla. Si se especifica partition_scheme, la tabla será una tabla con particiones cuyas particiones se almacenan en un conjunto de uno o más grupos de archivos especificados en partition_scheme. Si se especifica filegroup, la tabla se almacena en el grupo de archivos con nombre. El grupo de archivos debe existir en la base de datos. Si se especifica "default", o bien si ON no se especifica en ninguna parte, la tabla se almacena en el grupo de archivos predeterminado. El mecanismo de almacenamiento de una tabla según se especifica en CREATE TABLE no se puede modificar posteriormente.

ON {esquema_de_partición | grupo_de_archivos | "default"}
También se puede especificar en una restricción PRIMARY KEY o UNIQUE. Estas restricciones crean índices. Si se especifica grupo_de_archivos, el índice se almacena en el grupo de archivos con nombre. Si se especifica "default", o bien si ON no se especifica en ninguna parte, el índice se almacena en el mismo grupo de archivos que la tabla. Si la restricción PRIMARY KEY o UNIQUE crea un índice clúster, las páginas de datos de la tabla se almacenan en el mismo grupo de archivos que el índice. Si se especifica CLUSTERED o la restricción crea un índice agrupado, y se especifica un valor esquema_de_partición distinto del valor esquema_de_partición o grupo_de_archivos de la definición de tabla, o viceversa, únicamente se respeta la definición de restricción y se omite el resto.

Observaciones

No se admite la creación de una tabla temporal como una tabla de nodo o perimetral.

No se admite la creación de una tabla de nodo o perimetral como una tabla temporal.

No se admite Stretch Database para una tabla de nodo o perimetral.

Importante

Stretch Database está en desuso en SQL Server 2022 (16.x) y Azure SQL Database. Esta característica se quitará en una versión futura del motor de base de datos. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.

Las tablas de nodo o perimetrales no pueden ser tablas externas (no hay compatibilidad de PolyBase con las tablas de Graph).

No se puede modificar un nodo de gráfico o una tabla perimetral sin particiones en una tabla de nodo de gráfico o una tabla perimetral con particiones.

Ejemplos

A. Creación de una tabla NODE

En el ejemplo siguiente se muestra cómo se crea una tabla NODE.

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

B. Creación de una tabla EDGE

En el ejemplo siguiente se muestra cómo se crean tablas 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;

En el ejemplo siguiente se modela una regla por la que solo las personas pueden ser amigas de otras personas, lo que significa que este borde no permite hacer referencia a ningún nodo distinto de 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 también

ALTER TABLE table_constraint
ALTER TABLE (Transact-SQL)
INSERT (SQL Graph)]
Graph processing with SQL Server 2017 (Procesamiento de gráficos con SQL Server 2017)