> Tech > Trouver votre identité

Trouver votre identité

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

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

Guide de technologie 5G pour l’entreprise

Guide de technologie 5G pour l’entreprise

Pourquoi la 5G est-elle faite pour votre entreprise ? La 5G peut améliorer la vitesse, la fiabilité et la capacité de votre réseau, permettant ainsi une meilleure collaboration, une productivité accrue et une prise de décision plus rapide. Notre livre blanc " The Big Book of Enterprise 5G" vous fournit les informations stratégiques dont vous avez besoin pour prendre des décisions éclairées et préparer votre entreprise à prospérer dans l'ère de la 5G. Cradlepoint, part of Ericsson est le leader mondial des solutions de réseau sans fil 4G LTE et 5G fournies via le cloud. Connectez vos employés, lieux et objets avec la 4G LTE et la 5G pour un WAN sans fil d'entreprise.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010