

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# `CREATE TABLE`
<a name="create-table-syntax-support"></a>

`CREATE TABLE` definiert eine neue Tabelle.

```
CREATE TABLE [ IF NOT EXISTS ] table_name ( [
  { column_name data_type [ column_constraint [ ... ] ]
    | table_constraint
    | LIKE source_table [ like_option ... ] }
    [, ... ]
] )

where column_constraint is:

[ CONSTRAINT constraint_name ]
{ NOT NULL |
  NULL |
  CHECK ( expression )|
  DEFAULT default_expr |
  GENERATED ALWAYS AS ( generation_expr ) STORED |
  GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY ( sequence_options ) |
  UNIQUE [ NULLS [ NOT ] DISTINCT ] index_parameters |
  PRIMARY KEY index_parameters |

and table_constraint is:

[ CONSTRAINT constraint_name ]
{ CHECK ( expression ) |
  UNIQUE [ NULLS [ NOT ] DISTINCT ] ( column_name [, ... ] ) index_parameters |
  PRIMARY KEY ( column_name [, ... ] ) index_parameters |

and like_option is:

{ INCLUDING | EXCLUDING } { COMMENTS | CONSTRAINTS | DEFAULTS | GENERATED | IDENTITY | INDEXES | STATISTICS | ALL }

index_parameters in UNIQUE, and PRIMARY KEY constraints are:
[ INCLUDE ( column_name [, ... ] ) ]
```

## Identitätsspalten
<a name="create-table-identity-columns"></a>

**Anmerkung**  
Bei der Verwendung von Identitätsspalten sollte der Cache-Wert sorgfältig abgewogen werden. Weitere Informationen finden Sie in der Erläuterung „Wichtig“ auf der [`CREATE SEQUENCE`](create-sequence-syntax-support.md) Seite.  
Hinweise zur optimalen Verwendung von Identitätsspalten auf der Grundlage von Workload-Mustern finden Sie unter[Arbeiten mit Sequenzen und Identitätsspalten](sequences-identity-columns-working-with.md).

Die `GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY ( sequence_options )` Klausel erstellt die Spalte als *Identitätsspalte*. Ihr wird eine implizite Sequenz angehängt, und in neu eingefügten Zeilen enthält die Spalte automatisch Werte aus der ihr zugewiesenen Sequenz. Eine solche Spalte ist implizit. `NOT NULL`

Die Klauseln `ALWAYS` und `BY DEFAULT` bestimmen, wie explizit vom Benutzer angegebene Werte in `INSERT` Befehlen und Befehlen behandelt werden. `UPDATE`

Wenn in einem `INSERT` Befehl ausgewählt `ALWAYS` ist, wird ein benutzerdefinierter Wert nur akzeptiert, wenn in der `INSERT` Anweisung Folgendes angegeben ist. `OVERRIDING SYSTEM VALUE` Wenn ausgewählt `BY DEFAULT` ist, hat der benutzerdefinierte Wert Vorrang.

Wenn in einem `UPDATE` Befehl diese Option ausgewählt `ALWAYS` ist, wird jede Aktualisierung der Spalte auf einen anderen Wert als diesen `DEFAULT` abgelehnt. Wenn diese Option ausgewählt `BY DEFAULT` ist, kann die Spalte normal aktualisiert werden. (Es gibt keine `OVERRIDING` Klausel für den `UPDATE` Befehl.)

Die *sequence\$1options* Klausel kann verwendet werden, um die Parameter der Sequenz zu überschreiben. Zu den verfügbaren Optionen gehören die für[`CREATE SEQUENCE`](create-sequence-syntax-support.md), plus`SEQUENCE NAME name`. Ohne `SEQUENCE NAME` diese Option wählt das System einen unbenutzten Namen für die Sequenz.