Colonnes d’identité (auto-incrémentation)
La colonne d’identité est une colonne associée au générateur de séquence interne.Les colonnes d’identité peuvent être définies soit par la phrase GENERATED BY DEFAULT AS IDENTITY
, soit par la phrase GENERATED ALWAYS AS IDENTITY
.
Si la colonne d’identité est spécifiée comme Générée par défaut
, alors sa valeur sera incrémentée et utilisée comme valeur par défaut à chaque insertion, seulement si la valeur de cette colonne n’est pas explicitement spécifiée.
Pour utiliser la valeur par défaut générée, vous devez soit spécifier le mot clé DEFAULT
lors de l’insertion dans la colonne d’identité, soit simplement ne pas mentionner la colonne d’identité dans la liste des colonnes à insérer.Sinon, la valeur que vous avez spécifiée sera utilisée.
GENERATED BY DEFAULT AS IDENTITY
CREATE TABLE greetings (
id INT GENERATED BY DEFAULT AS IDENTITY,
name CHAR(50));
-- specify value "1":
INSERT INTO greetings VALUES (1, 'hi');
-- use generated default
INSERT INTO greetings VALUES (DEFAULT, 'salut');
-- use generated default
INSERT INTO greetings(ch) VALUES ('bonjour');
Note
|
Ce comportement peut être modifié dans l’instruction INSERT si la directive `OVERRIDING USER VALUE' est spécifiée.Voir OVERRIDING directive pour plus de détails. |
Si la colonne d’identité est spécifiée comme GENERATED ALWAYS', sa valeur s’incrémentera chaque fois qu’elle sera insérée.Si vous tentez d’attribuer explicitement une valeur de colonne d’identité dans l’instruction `INSERT
, vous obtiendrez un message d’erreur.Dans l’instruction INSERT
, vous pouvez spécifier le mot-clé DEFAULT
au lieu d’une valeur pour la colonne d’identité.
create table greetings (
id INT GENERATED ALWAYS AS IDENTITY,
name CHAR(50));
INSERT INTO greetings VALUES (DEFAULT, 'hello');
INSERT INTO greetings(ch) VALUES ('bonjour');
Note
|
Ce comportement peut être modifié dans l’instruction |
La phrase optionnelle START WITH
vous permet de spécifier une valeur de départ autre que zéro.La phrase INCREMENT [BY]
CREATE TABLE, IDENTITY, INCREMENT BY définit la valeur d’incrémentation.La valeur de l’incrément doit être différente de 0.Par défaut, la valeur de l’incrément est de 1.
-
Le type de données de la colonne d’identité doit être un nombre entier avec une échelle de zéro. Les types acceptables sont
SMALLINT
,INTEGER
,BIGINT
,NUMERIC(x,0)
etDECIMAL(x,0)
; -
La colonne d’identification ne peut pas avoir les valeurs
DEFAULT
etCOMPUTED
.
Note
|
|