Le fait que le code applicatif génère des valeurs clé pour des colonnes comme ID employé présente un avantage : l'application peut facilement se servir de la valeur générée pour l'afficher ou l'inclure dans un e-mail souhaitant la bienvenue à un nouvel employé. Par exemple, l'application pourrait émettre une opération
Trouver votre identité
FETCH contre la
ligne juste insérée et extraire la valeur
d’identité manuellement. Mais c’est
une solution complexe et lente à exécuter.
La fonction SQL IDENTITY_
VAL_LOCAL constitue une meilleure
réponse.
Cette fonction renvoie la valeur la
plus récemment attribuée pour une colonne d’identité dans un job ou une
connexion de base de données. Si vous
utilisez des threads dans un job ou une
connexion, la fonction renvoie toujours
la dernière valeur insérée dans
une colonne d’identité par n’importe
quel thread, pas simplement le thread
invoquant la fonction IDENTITY_VAL_
LOCAL. La valeur d’identité renvoyée
par cette fonction peut être soit une
valeur générée par DB2 UDB, soit une
valeur spécifiée par l’utilisateur (INSERT
avec OVERRIDING SYSTEM VALUE,
par exemple). Voici un exemple
d’utilisation de l’instruction VALUES
pour extraire la valeur d’identité la plus
récemment attribuée dans une variable
hôte locale :
VALUES IDENTITY_VAL_LOCAL() INTO:hostvar
Si une tentative d’instruction SQL
INSERT se termine mal, la fonction
IDENTITY_VAL_LOCAL renverra des
résultats imprévisibles. Si aucune instruction
SQL INSERT n’a été exécutée
dans un job ou une connexion, la fonction
IDENTITY_VAL_LOCAL renverra
une valeur nulle.
La fonction IDENTITY_VAL_LOCAL
n’est pas affectée par les instructions
UPDATE, COMMIT ou ROLLBACK, pas
plus qu’elle n’est affectée par un INSERT
dans une table sans colonnes
d’identité.
La figure 2 montre une suite d’instructions
qui démontre comment la valeur
de fonction IDENTITY_VAL_LOCAL
est affectée et pas affectée par des
instructions SQL.
Si l’on utilise des triggers (déclencheurs)
pour un traitement de gestion,
on peut trouver la valeur d’identité générée
dans le trigger en accédant à une
variable de transition de trigger SQL ou
au buffer de triggers externe. On peut
utiliser la fonction IDENTITY_VAL_LOCAL
à l’intérieur d’un trigger, mais il
faut consulter DB2 UDB SQL
Reference avant de coder cette logique.
La fonction IDENTITY_VAL_LOCAL
renverra toujours null si elle est invoquée
dans un trigger Insert Before
ou la condition trigger (c’est-à -dire la clause WHEN) d’un trigger Before
Insert. Si la fonction est invoquée par
un trigger Insert After, elle renverra
aussi null à moins que la logique du
trigger After n’inclue une instruction
INSERT qui a déjà été exécutée.
Si la fonction IDENTITY_VAL_LOCAL
est invoquée après une instruction
INSERT qui a provoqué l’exécution
de triggers, le résultat est la valeur
attribuée réellement à la colonne
d’identité (c’est-à -dire, la valeur qui serait
renvoyée sur une instruction SELECT
suivante). Cette valeur n’est pas
forcément celle qui est fournie dans
l’instruction INSERT ou une valeur générée
par le responsable de la base de
données. La valeur attribuée pour une
colonne d’identité pourrait être une
valeur qui été modifiée par un trigger Before. Les triggers SQL Before peuvent
modifier des données pour n’importe
quelle colonne avec une instruction
SET et les triggers externes
accomplissent cette modification de
données en modifiant le buffer de triggers.
Les interfaces non-SQL ne disposent
d’aucune fonction pour extraire la
valeur la plus récemment attribuée. Par
conséquent, des applications utilisant
des interfaces non-SQL doivent lire le
dernier enregistrement inséré pour accéder
à la valeur d’identité générée.
Téléchargez cette ressource
Plan de sécurité Microsoft 365
Les attaquants savent comment prendre le contrôle de votre tenant Microsoft 365, et vous, savez-vous comment le reprendre en main ?
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Souveraineté des données : bâtir un stockage hybride adapté à l’ère de l’IA
- Secteur public : l’IA accélère la modernisation des infrastructures
- De l’inventaire à l’action : l’Asset Management au service d’un Numérique plus responsable
- IA et bureaucratie : la complexité qui grève les projets
Articles les + lus
Quand les « travailleurs numériques » pallient le manque de bras dans l’industrie
Model Context Protocol : le contexte, grand oublié du débat
Microsoft dévoile MAI-Thinking-1 : un modèle de raisonnement « enterprise-grade » en preview publique
Couchbase lance AI Data Plane pour industrialiser l’IA agentique
Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
À la une de la chaîne Tech
- Quand les « travailleurs numériques » pallient le manque de bras dans l’industrie
- Model Context Protocol : le contexte, grand oublié du débat
- Microsoft dévoile MAI-Thinking-1 : un modèle de raisonnement « enterprise-grade » en preview publique
- Couchbase lance AI Data Plane pour industrialiser l’IA agentique
- Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
