Identitätsspalten (Autoinkrement)
Identitätsspalten werden mit dem GENERATED {ALWAYS | BY DEFAULT} AS IDENTITY
-Klausel.Die Identitätsspalte ist eine Spalte, die einem internen Sequenzgenerator zugeordnet ist.Sein Wert wird jedes Mal automatisch gesetzt, wenn er nicht in der INSERT
-Anweisung angegeben wird oder wenn der Spaltenwert als DEFAULT
angegeben wird.
Regeln
-
Eine Identitätsspalte kann nicht in eine reguläre Spalte geändert werden.Erlaubte Typen sind
SMALLINT
,INTEGER
,BIGINT
,NUMERIC(p[,0])
undDECIMAL(p[,0])
mit p <= 18.-
Der Typ "INT128" und numerische Typen mit einer Genauigkeit von mehr als 18 werden nicht unterstützt.
-
-
Eine Identitätsspalte darf keinen
DEFAULT
- oderCOMPUTED
-Wert haben. -
Eine Identitätsspalte kann zu einer regulären Spalte geändert werden.
-
Eine reguläre Spalte kann nicht in eine Identitätsspalte geändert werden.
-
Identitätsspalten sind implizit
NOT NULL
(non-nullable) und können nicht nullable gemacht werden. -
Eindeutigkeit wird nicht automatisch erzwungen.Eine
UNIQUE
- oderPRIMARY KEY
-Beschränkung ist erforderlich, um die Eindeutigkeit zu garantieren. -
Die Verwendung anderer Methoden zur Generierung von Schlüsselwerten für Identitätsspalten, z. B. durch Trigger-Generator-Code oder indem Benutzern erlaubt wird, sie zu ändern oder hinzuzufügen, wird davon abgeraten, unerwartete Schlüsselverletzungen zu vermeiden.
-
Der Wert
INCREMENT
darf nicht null (0
) sein.