HappyHarry a écrit :
Citation :
The variable is a synonym for the LAST_INSERT_ID variable. It exists for compatibility with other databases. As of MySQL 3.23.25, you can read its value with SELECT @@IDENTITY. As of MySQL 4.0.3, you can also set its value with SET IDENTITY.
|
doc de mysql
|
t'ain !
c'est marrant ça, parceque @@IDENTITY est totalement proprio MS SQL Server. Comme quoi, si même MySQL prends modèle sur MS SQL Server, c'est que c'est pas si mal que ça en fin de compte (et pour les anti-M$, désolé, mais ça explique alors pourquoi MySQL est aussi pourri
)
Ceci-dit, @@IDENTITY est à banir sous SQL Server. Il faut mieu utiliser la fonction système "SCOPE_IDENTITY()"
En effet :
@@IDENTITY retourne la dernière clé créé pour la table au sein de la transaction globale (sous-transactions comprises). Ce qui fait que si l'insert à déclenché un trigger qui a refait un insert dans la table, alors @@IDENTITY va retourne le numéro de la ligne généré par le trigger et non la ligne qu'on vient d'insérer.
SCOPE_IDENTITY() retourne quant à lui l'ID généré par la dernière instruction éxécutée au sein de la transaction. Ainsi, quelque soient les triggers et cnie, on retourne bien la clé qu'on a inséré.