CREATE TABLE (Azure SQL-Datenbank)

Erstellt eine neue Tabelle in Azure SQL-Datenbank.

Wichtig

In der aktuellen Implementierung werden Verbunde bei der Web- und Business-Dienstebene nicht mehr unterstützt. Sie könnten beispielsweise benutzerdefinierte Shardinglösungen einsetzen, um die Skalierbarkeit, Flexibilität und Leistung zu maximieren.Weitere Informationen zu benutzerdefinierten Shardinglösungen finden Sie unter Horizontales Skalieren bei Azure SQL-Datenbanken.

Gilt für: Azure SQL-Datenbank. Informationen zur SQL Server-Syntax finden Sie unter CREATE TABLE (SQL Server).

Syntax

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

Argumente

Hinweis

Dieses Syntaxdiagramm veranschaulicht die unterstützten Argumente und Optionen in Azure SQL-Datenbank.

Azure SQL-Datenbank unterstützt das aus drei Teilen bestehende Namensformat database_name**.[schema_name].**object_name, wenn database_name die aktuelle Datenbank oder database_name "tempdb" ist und object_name mit # beginnt.

Azure SQL-Datenbank bietet keine Unterstützung von vierteiligen Namen.

Während SPARSE-Spalten von allen Clienttreibern abgefragt werden können, die von Azure SQL-Datenbank unterstützt werden, bietet derzeit nur der SQL Server 2008 Native Client ODBC-Treiber oder höher vollständige Unterstützung für die Komprimierung von NULL-Werten in einem Resultset.

Die FEDERATED ON-Klausel erstellt die Tabelle als Verbundtabelle in einem vorhandenen Verbund und wendet die Verteilungseinschränkung (distribution_name) für den Verbund auf die angegebene Verbundspalte in der Tabelle an (column_name). Verbundtabellen besitzen die folgenden Eigenschaften:

  • Die Verbundspalte der Verbundtabelle kann nur Daten enthalten, die range_low (inklusiv) und range_high (exklusiv) des Verbundmitglieds entsprechen.

  • Der Datentyp der Verbundspalte muss genau mit dem Datentyp übereinstimmen, der in der Verbunddefinition definiert ist.

  • Alle eindeutigen und gruppierten Indizes der Verbundtabelle müssen die Verbundspalte enthalten. Die Reihenfolge, in der die Verbundspalte im Index angezeigt wird, kann je nach Ordnungszahl des Schlüssels im Verbund variieren.

  • Die Werte der Verbundspalte können nicht auf Werte aktualisiert werden, die außerhalb des Bereichs des Verbundmitglieds liegen.

  • Die Verbundspalte kann keine persistente oder nicht persistente berechnete Spalte sein.

  • Indizierte Sichten können nicht für Verbundtabellen erstellt werden.

  • Verbundspalten können keine NULL-Werte zulassen.

  • Alle Fremdschlüsseleinschränkungen für Verbundtabellen müssen die Verbundspalte sowohl in der verweisenden als auch in der verwiesenen Tabelle mit der gleichen Ordnungszahl im Fremdschlüssel enthalten. Verweistabellen können keine Fremdschlüsselbeziehungen mit Verbundtabellen aufweisen. Verbundtabellen können ohne Einschränkungen Fremdschlüsselbeziehungen mit Verweistabellen aufweisen.

  • Sie können die mit der FEDERATED ON-Klausel erstellten Tabellen in der Regel löschen. Außerdem können Sie ALTER TABLE verwenden, um alle Eigenschaften einer Verbundtabelle mit Ausnahme von Verbundattributen wie dem Verbundschlüssel zu ändern. Um eine Verweistabelle in eine Verbundtabelle oder eine Verbundtabelle in eine Verweistabelle zu ändern, müssen Sie neue Tabellen mit den gewünschten Eigenschaften erstellen und die vorhandene Tabelle löschen.

  • Wenn eine Tabelle mit STATISTICS_NORECOMPUTE markiert ist, machen Verbundvorgänge wie SPLIT Statistiken nicht ungültig oder berechnen Statistiken erneut. Dies könnte nach Neupartitionierungsvorgängen wie SPLIT Probleme mit dem Ausführungsplan verursachen.

  • Verbundtabellen unterstützen nicht die IDENTITY-Eigenschaft.

  • Verbundtabellen unterstützen nicht den timestamp- und rowversion-Datentyp.

Weitere Informationen zu den Argumenten und die CREATE TABLE-Anweisung finden Sie unter CREATE TABLE (SQL Server).

Hinweise

Da Azure SQL-Datenbank keine Heaptabellen unterstützt, muss eine Tabelle über einen gruppierten Index verfügen. Wenn eine Tabelle ohne gruppierte Einschränkung erstellt wird, muss ein gruppierter Index erstellt werden, bevor Einfügevorgänge für die Tabelle zulässig sind.