Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Colonnes d'identité
Important
Lorsque vous utilisez des colonnes d'identité, la valeur du cache doit être soigneusement prise en compte. Pour plus d'informations, consultez la légende Important sur la CREATE SEQUENCE page.
Pour obtenir des conseils sur la meilleure façon d'utiliser les colonnes d'identité en fonction des modèles de charge de travail, voirUtilisation de séquences et de colonnes d'identité.
Une colonne d'identité est une colonne spéciale générée automatiquement à partir d'une séquence implicite. Il peut être utilisé pour générer des valeurs clés. Pour créer une colonne d'identité, utilisez la GENERATED ... AS IDENTITY clause dansCREATE TABLE, par exemple :
CREATE TABLE people ( id bigint GENERATED ALWAYS AS IDENTITY (CACHE 70000), ... );
ou bien :
CREATE TABLE people ( id bigint GENERATED BY DEFAULT AS IDENTITY (CACHE 70000), ... );
Pour plus d’informations, consultez CREATE TABLE.
Si une INSERT commande est exécutée sur la table contenant la colonne d'identité et qu'aucune valeur n'est explicitement spécifiée pour la colonne d'identité, une valeur générée par la séquence implicite est insérée. Par exemple, avec les définitions précédentes et en supposant que des colonnes supplémentaires soient appropriées, en écrivant :
INSERT INTO people (name, address) VALUES ('A', 'foo'); INSERT INTO people (name, address) VALUES ('B', 'bar');
générerait des valeurs pour la id colonne commençant à 1 et produirait les données de table suivantes :
id | name | address ----+------+--------- 1 | A | foo 2 | B | bar
Vous pouvez également spécifier le mot-clé DEFAULT à la place d'une valeur pour demander explicitement la valeur générée par la séquence :
INSERT INTO people (id, name, address) VALUES (DEFAULT, 'C', 'baz');
De même, le mot-clé DEFAULT peut être utilisé dans UPDATE les commandes.
Ainsi, à bien des égards, une colonne d'identité se comporte comme une colonne avec une valeur par défaut.
Les clauses ALWAYS et la définition BY DEFAULT de colonne déterminent la manière dont les valeurs spécifiées explicitement par l'utilisateur sont traitées dans UPDATE les commandes INSERT et. Dans une INSERT commande, si elle ALWAYS est sélectionnée, une valeur spécifiée par l'utilisateur n'est acceptée que si l'INSERTinstruction le préciseOVERRIDING SYSTEM VALUE. Si cette option BY DEFAULT est sélectionnée, la valeur spécifiée par l'utilisateur est prioritaire. Ainsi, l'utilisation BY DEFAULT entraîne un comportement plus proche des valeurs par défaut, où la valeur par défaut peut être remplacée par une valeur explicite, tout en ALWAYS offrant une protection supplémentaire contre l'insertion accidentelle d'une valeur explicite.
Le type de données d'une colonne d'identité doit être l'un des types de données pris en charge par les séquences. (Consultez CREATE SEQUENCE.) Les propriétés de la séquence associée peuvent être spécifiées lors de la création d'une colonne d'identité (voirCREATE TABLE) ou modifiées ultérieurement (voirALTER TABLE).
Une colonne d'identité est automatiquement marquée commeNOT NULL. Une colonne d'identité ne garantit toutefois pas l'unicité. (Une séquence renvoie normalement des valeurs uniques, mais une séquence peut être réinitialisée ou des valeurs peuvent être insérées manuellement dans la colonne d'identité, comme indiqué précédemment.) L'unicité devrait être appliquée à l'aide d'une UNIQUE contrainte PRIMARY KEY or.