Comment retrouver la clé primaire d'une insertion toute fraîche ? - SQL/NoSQL - Programmation
Marsh Posté le 27-08-2004 à 17:28:23
Quoi ?
Marsh Posté le 27-08-2004 à 17:31:11
La génération de valeurs de clé primaire n'est pas standard SQL.
A partir de là, chaque Système de Gestion de Base de Données gère ça de sa façon propre. Donc si on ne sais pas lequel tu utilises, on ne peut pas te répondre.
Marsh Posté le 27-08-2004 à 17:37:37
Ah ok, il s'agit de MySQL.
Marsh Posté le 02-09-2004 à 00:21:49
@@IDENTITY ?
Marsh Posté le 02-09-2004 à 08:01:09
mysql_insert_id effectivement.
@@idendity c'est pour de l'Access ou SQL server
Marsh Posté le 02-09-2004 à 08:08:34
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
Marsh Posté le 02-09-2004 à 11:39:40
HappyHarry a écrit :
|
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é.
Marsh Posté le 02-09-2004 à 12:18:58
Arjuna a écrit : |
j'ai jamais dit le contraire
Marsh Posté le 03-03-2006 à 09:23:05
Bonjour, je donne suite a ce sujet car je suis un peu dans le meme cas, mais j'aurais voulu savoir s'il existait de telles tables sur firebird et oracle, sur firebird il me semble avoir trouvé rsb$constraintes ou quelque chose du genre donc c bon, mais sur oracle, j'ai beau tester toutes les tables system, j'avoue avoir du mal a trouver ce qui m'interesse, sauriez vous me repondre? ce qui me ferait gagner bien du temps
merci
Marsh Posté le 27-08-2004 à 16:30:03
Salut
Je voudrais juste savoir s'il était possible de connaître la clé primaire d'un élément qui vient juste d'être inséré dans une table.
C'est parce que j'ai plusieurs tables, et certain champs d'une table X font référence à une clé primaire d'une table Y. Donc pour inséré un élément dans la table X, il faut connaitre la clé primaire de l'élément de la table Y en question qui vient juste d'être inséré.
Merci
Message édité par Imhotep le 27-08-2004 à 16:31:10
---------------
Qui avale une noix de coco fait confiance à son anus...