4) récupérer la valeur du dernier auto incrément
SQL Server dispose de 3 outils pour récupérer la valeur du dernier auto incrément.
La varibale @@IDENTITY fournit la valeur du dernier auto incrément de la session de l'utilisateur quelque soit la table qui a été auto incrémentée
La fonction SCOPE_IDENTITY() (pas d'arguement) fournit la valeur du dernier auto incrément de la session de l'utilisateur dans l'étendue de code quelque soit la table qui a été auto incrémentée.
Exemple :
INSERT INTO T_CLIENT_CLI (CLI_NOM, CLI_PRENOM) VALUES ('DUVAL', 'Luc');
SELECT @@IDENTITY AS IDENT,
SCOPE_IDENTITY() AS SCOP_IDENT,
IDENT_CURRENT('dbo.T_CLIENT_CLI') AS CURR_IDENT
IDENT SCOP_IDENT CURR_IDENT
--------- ------------ ------------
1000002 1000002 1000002
La différence entre @@IDENTITY et SCOPE_IDENTITY() est subtile. En effet, si l'insertion dans votre table déclenche un trigger qui insère des données dans une autre table (trigger AFTER INSERT) alors la variable @@IDENTITY contient l'incrément de cet autre table et la fonction SCOPE_IDENTITY() renvoie le dernier incrément visible dans l'unité de code (fonction, trigger, procédure...).
Démonstration :
INSERT INTO T_CLIENT_CLI (CLI_NOM, CLI_PRENOM) VALUES ('DUBOIS', 'Marie');
SELECT @@IDENTITY AS IDENT,
SCOPE_IDENTITY() AS SCOP_IDENT,
IDENT_CURRENT('master.sys.databases') AS CURR_IDENT
IDENT SCOP_IDENT CURR_IDENT
--------- ------------ ------------
2 1000003 NULL
Partager