Quand vous insérez une ligne dans une
colonne d'identité définie avec l'option
par défaut GENERATED ALWAYS,
aucune valeur n'est spécifiée pour la
colonne d'identité. La valeur de colonne
d'identité peut être omise de
l'une des deux manières décrites cidessous
:
INSERT INTO employee(name, dept#
VALUES('larry Bird', 'BC33')
ou
INSERT INTO
Générer une identité
employee
VALUES(DEFAULT,’Larry Bird’, ‘BC33’)
Si la ligne Larry Bird est la première
ligne ajoutée à la table employee, n’importe
quelle instruction INSERT génèrera
une valeur empid de 1 pour Larry
Bird.
Si on essaie de spécifier une valeur
pour une colonne d’identité créée
avec l’option GENERATED ALWAYS,
une erreur (SQLSTATE 428C9) est renvoyée.
Seule exception à cette règle : si
la clause OVERRIDING SYSTEM VALUE
a été spécifiée sur une instruction
INSERT (ou UPDATE). Si l’INSERT
contient une clause OVERRIDING SYSTEM
VALUE, les nouvelles valeurs spécifiées
pour une colonne d’identité
(plutôt que les valeurs générées par
DB2 UDB) sont utilisées.
Voici un exemple d’utilisation de
cette clause OVERRIDING pour spécifier
une valeur ID employé générée par
l’utilisateur pour Larry Bird :
INSERT INTO employee VALUES
(33,’Larry Bird’, ‘BC33’)
OVERRIDING SYSTEM VALUE
Cet exemple montre comment
l’option OVERRIDING SYSTEM VALUE
peut aussi introduire des trous dans la
suite de valeurs pour une colonne
d’identité.
OVERRIDING USER VALUE est une
autre option de remplacement que
l’on peut spécifier sur des instructions
INSERT (et UPDATE). Avec OVERRIDING
USER VALUE, DB2 UDB génère
toujours la valeur pour une colonne
d’identité et ignore les éventuelles
valeurs fournies par l’utilisateur pour
une instruction INSERT ou UPDATE.
Il n’y a pas d’option override pour
des interfaces non-SQL. Comme mentionné
précédemment, DB2 UDB génèrera
toujours la valeur de colonne
d’identité quand des lignes seront
ajoutées ou modifiées via une interface
non-SQL.
Le compteur de la colonne d’identité
est incrémenté ou décrémenté indépendamment
d’un job ou d’une
connexion. Si un job donné insère
deux lignes qui incrémentent un
compteur d’identité deux fois, ce job
peut subir un trou entre les deux
nombres qui sont générés, parce que
d’autres jobs peuvent être en train
d’incrémenter simultanément le
même compteur d’identité.
Une colonne d’identité peut aussi
sembler présenter des trous dans la
suite de valeurs, par suite d’une instruction
INSERT qui a été annulée dans
le cadre de la transaction de base de
données. Dès lors qu’une valeur de colonne
d’identité a été attribuée, elle ne
sera pas réutilisée même si l’instruction
INSERT associée a été annulée. Par
exemple, si le INSERT du premier employé
dans une table employee est annulé,
le prochain employé inséré dans
la table recevra un ID employé de 2,
pas 1. Les valeurs de colonne d’identité
qui ont été supprimées ne sont pas
non plus réutilisées.
Téléchargez cette ressource
Les mégatendances cybersécurité et cyber protection 2024
L'évolution du paysage des menaces et les conséquences sur votre infrastructure, vos outils de contrôles de sécurité IT existants. EPP, XDR, EDR, IA, découvrez la synthèse des conseils et recommandations à appliquer dans votre organisation.
Les articles les plus consultés
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
- Chiffrements symétrique vs asymétrique
- Cybersécurité Active Directory et les attaques de nouvelle génération
- N° 2 : Il faut supporter des langues multiples dans SharePoint Portal Server
- Les 6 étapes vers un diagnostic réussi
Les plus consultés sur iTPro.fr
- Baromètre de la Transformation digitale 2024 en France
- Le secteur financier reste dans la ligne de mire des cyberattaquants
- CyberPatriot ®, le SOC de dernière génération de CHEOPS TECHNOLOGY
- L’IA comme levier d’évangélisation du COMEX à la cybersécurité
- Intégration et utilisation de l’IA en 3 conseils clés