Directive OVERRIDING
Les valeurs des colonnes d’identité (GENERATED BY DEFAULT AS IDENTITY
) peuvent être remplacées par les instructions INSERT
, UPDATE OR INSERT
, MERGE
. Pour cela, il suffit de spécifier la valeur de la colonne dans la liste des valeurs. Cependant, pour les colonnes définies comme GENERATED ALWAYS
, cela n’est pas autorisé.
La directive OVERRIDING SYSTEM VALUE
permet de remplacer une valeur générée par le système par une valeur spécifiée par l’utilisateur. La directive OVERRIDING SYSTEM VALUE
provoquera une erreur s’il n’y a pas de colonnes d’identité dans la table ou si elles sont définies comme GENERATED BY DEFAULT AS IDENTITY
.
OVERRIDING SYSTEM VALUE
dans l’instruction INSERT
.CREATE TABLE objects (
id INT GENERATED ALWAYS AS IDENTITY,
name CHAR(50));
-- la valeur avec le code 11 sera insérée
INSERT INTO objects (id, name)
OVERRIDING SYSTEM VALUE
VALUES (11, 'Laptop');
La directive OVERRIDE USER VALUE
effectue la tâche inverse, c’est-à-dire qu’elle remplace la valeur spécifiée par l’utilisateur par la valeur générée par le système si la colonne d’identité est définie comme GENERATED BY DEFAULT AS IDENTITY
. La directive OVERRIDING USER VALUE
provoquera une erreur si la table ne contient pas de colonne d’identité ou si elle est définie comme GENERATED ALWAYS AS IDENTITY
.
OVERRIDING USER VALUE
dans l’instruction INSERT
.CREATE TABLE objects (
id INT GENERATED BY DEFAULT AS IDENTITY,
name CHAR(50));
-- la valeur 12 sera ignorée
INSERT INTO objects (id, name)
OVERRIDING SYSTEM VALUE
VALUES (12, 'Laptop');