CREATE TABLE (base de données SQL Azure)

Crée une nouvelle table dans Base de données SQL Azure.

Important

L'implémentation actuelle des fédérations sera retirée avec les couches de service Web et Business. Envisagez de déployer des solutions de partitionnement personnalisées pour maximiser l'extensibilité, la flexibilité et les performances.Pour plus d'informations sur le partitionnement personnalisé, consultez Montée en charge des bases de données Azure SQL.

S'applique à : Base de données SQL Azure. Pour la syntaxe de SQL Server, consultez CREATE TABLE (SQL Server).

Syntaxe

CREATE TABLE 
    [ database_name . [ schema_name ] . | schema_name . ] table_name 
    ( { <column_definition> | <computed_column_definition> 
        | <column_set_definition> } 
        [ <table_constraint> ] [ ,...n ] ) 
FEDERATED ON ( distribution_name = column_name)
[ ; ]

<column_definition> ::= 
column_name <data_type>
    [ COLLATE collation_name ] 

    [ NULL | NOT NULL ]
    [ 
        [ CONSTRAINT constraint_name ] DEFAULT constant_expression ] 
      | [ IDENTITY [ ( seed ,increment ) ] 
    ]
  [ <column_constraint> [ ...n ] ]

  [ SPARSE ]
  
<data type> ::= 
[ type_schema_name . ] type_name 
    [ ( precision [ , scale ] | max 
] 

<column_constraint> ::= 
[ CONSTRAINT constraint_name ] 
{     { PRIMARY KEY | UNIQUE } 
        [ CLUSTERED | NONCLUSTERED ] 
        [ 
          WITH ( < index_option > [ , ...n ] ) 
        ] 
| [ FOREIGN KEY ] 
        REFERENCES [ schema_name . ] referenced_ table_name [ ( ref_column ) ] 
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
  | CHECK  ( logical_expression ) 
} 

<computed_column_definition> ::= 
column_name AS computed_column_expression 
[ PERSISTED [ NOT NULL ] ]
[ 
    [ CONSTRAINT constraint_name ]
    { PRIMARY KEY | UNIQUE }
        [ CLUSTERED | NONCLUSTERED ]
        [ 
          WITH ( <index_option> [ , ...n ] )
        ]
    | [ FOREIGN KEY ] 
        REFERENCES referenced_table_name [ ( ref_column ) ] 
        [ ON DELETE { NO ACTION | CASCADE } ] 
        [ ON UPDATE { NO ACTION } ] 
   [ NOT FOR REPLICATION ] 
    | CHECK ( logical_expression ) 
] 

<column_set_definition> ::= 
column_set_name XML COLUMN_SET FOR ALL_SPARSE_COLUMNS

< table_constraint > ::=
[ CONSTRAINT constraint_name ] 
{ 
    { PRIMARY KEY | UNIQUE } 
        [ CLUSTERED | NONCLUSTERED ] 
        (column [ ASC | DESC ] [ ,...n ] ) 
        [ 
           WITH ( <index_option> [ , ...n ] ) 
        ]
  
    | 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 } ] 

    | CHECK ( logical_expression ) 
} 

<index_option> ::=
{ 
  IGNORE_DUP_KEY = { ON | OFF } 
  | STATISTICS_NORECOMPUTE = { ON | OFF } 
}

Arguments

Notes

Ce diagramme de syntaxe illustre les arguments et les options pris en charge dans Base de données SQL Azure.

Base de données SQL Azure prend en charge le format de nom en trois parties database_name**.[schema_name].**object_name lorsque database_name est la base de données active ou database_name est la base de données tempdb et object_name commence par #.

Base de données SQL Azure ne prend pas en charge les noms en quatre parties.

Bien que les colonnes SPARSE puissent être interrogées par les pilotes clients pris en charge par Base de données SQL Azure, seul le pilote SQL Server 2008 Native Client ODBC ou version ultérieure prend en charge la compression des valeurs NULL d'un ensemble de résultats.

La clause FEDERATED ON crée la table en tant que table fédérée dans un groupe existant, et applique la contrainte de distribution (distribution_name) de la fédération à la colonne spécifiée de fédération dans la table (column_name). Les tables fédérées présentent les caractéristiques suivantes :

  • La colonne de fédération de la table fédérée ne peut contenir que des données qui confirment au membre de fédération range_low inclus et range_high exclus.

  • Le type de données de la colonne de fédération doit correspondre exactement au type de données défini dans la définition de fédération.

  • Les index uniques et cluster sur la table fédérée doivent contenir la colonne de fédération. L'ordre dans lequel la colonne de fédération apparaît dans l'index peut être différent de la valeur ordinale de la clé dans la fédération.

  • Les valeurs de colonne de fédération ne peuvent pas être mises à jour avec des valeurs en dehors de la plage du membre de fédération.

  • La colonne de fédération ne peut pas être une colonne calculée persistante ou non persistante.

  • Les vues indexées ne peuvent pas être créées sur des tables fédérées.

  • Les colonnes de fédération ne peuvent pas être NULL.

  • Toutes les contraintes de clé étrangère sur les tables fédérées doivent inclure la colonne de fédération sur les tables de référence et les tables référencées à la même position ordinale dans la clé étrangère. Les tables de référence ne peuvent pas avoir des relations de clé étrangère avec les tables fédérées. Les tables fédérées peuvent avoir des relations de clé étrangère avec les tables de référence sans restrictions.

  • Supprimez les tables créées avec la clause FEDERATED ON normalement. Utilisez également ALTER TABLE pour modifier les propriétés d'une table fédérée à l'exception des attributs de fédération, tels que la clé de fédération. Pour changer une table de référence en une table fédérée ou une table fédérée en une table de référence, vous devez créer de nouvelles tables avec les propriétés souhaitées et supprimer la table existante.

  • Lorsqu'une table est marquée avec STATISTICS_NORECOMPUTE, les opérations de fédération telles que SPLIT n'invalident pas ou ne recalculent pas de statistiques. Cela peut entraîner des problèmes de plan d'exécution après les opérations de repartitionnement, telles que SPLIT.

  • Les tables fédérées ne prennent pas en charge la propriété d'identité.

  • Les tables fédérées ne prennent pas en charge le type de données timestamp et rowversion.

Pour plus d'informations sur les arguments et l'instruction CREATE TABLE, consultez CREATE TABLE (SQL Server).

Notes

Étant donné que Base de données SQL Azure ne prend pas en charge les tables segments de mémoire, une table doit avoir un index cluster. Si une table est créée sans contrainte cluster, un index cluster doit être créé pour qu'une opération d'insertion soit autorisée sur la table.