Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1335 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Comment retrouver la clé primaire d'une insertion toute fraîche ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment retrouver la clé primaire d'une insertion toute fraîche ?

n°834337
Imhotep
Le monde est mon huître !!!
Posté le 27-08-2004 à 16:30:03  profilanswer
 

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...
mood
Publicité
Posté le 27-08-2004 à 16:30:03  profilanswer
 

n°834369
Arjuna
Aircraft Ident.: F-MBSD
Posté le 27-08-2004 à 17:05:38  profilanswer
 

SGBD ?

n°834393
Imhotep
Le monde est mon huître !!!
Posté le 27-08-2004 à 17:28:23  profilanswer
 

Quoi ?


---------------
Qui avale une noix de coco fait confiance à son anus...
n°834398
Arjuna
Aircraft Ident.: F-MBSD
Posté le 27-08-2004 à 17:31:11  profilanswer
 

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.


Message édité par Arjuna le 27-08-2004 à 17:31:35
n°834405
Imhotep
Le monde est mon huître !!!
Posté le 27-08-2004 à 17:37:37  profilanswer
 

Ah ok, il s'agit de MySQL.


---------------
Qui avale une noix de coco fait confiance à son anus...
n°834851
Beegee
Posté le 28-08-2004 à 00:32:51  profilanswer
 

qqch comme mysql_insert_id il me semble, en PHP.

n°839344
HappyHarry
Posté le 02-09-2004 à 00:21:49  profilanswer
 

@@IDENTITY ?


Message édité par HappyHarry le 02-09-2004 à 00:22:19
n°839381
deliriumtr​emens
sic transit intestinal...
Posté le 02-09-2004 à 08:01:09  profilanswer
 

mysql_insert_id effectivement.
 
@@idendity c'est pour de l'Access ou SQL server

n°839385
HappyHarry
Posté le 02-09-2004 à 08:08:34  profilanswer
 

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 [:spamafote]


Message édité par HappyHarry le 02-09-2004 à 08:08:51
n°839587
Arjuna
Aircraft Ident.: F-MBSD
Posté le 02-09-2004 à 11:39:40  profilanswer
 

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 [:spamafote]


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 :D)
 
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é.

mood
Publicité
Posté le 02-09-2004 à 11:39:40  profilanswer
 

n°839623
HappyHarry
Posté le 02-09-2004 à 12:18:58  profilanswer
 

Arjuna a écrit :


 
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é.


 
j'ai jamais dit le contraire ;)
 

n°1317567
killvince
Posté le 03-03-2006 à 09:23:05  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Comment retrouver la clé primaire d'une insertion toute fraîche ?

 

Sujets relatifs
probleme d insertion d un lien dans un mailRetrouver le language de programmetion
[PHP/MySQL] - Problème d'insertion dans BDD[C++/COM] Retrouver l'IID d'une interface
[xml+xsl] insertion de saut de ligne ?PHP MyAdmin - insertion de fichier texte => Errcode 2:Can't get stat
Insertion sélection multiple BD Mysqlinsertion de javascript dans du php ?!?
Insertion de données excel dans un tableaux phpmyadminerreur requete insertion
Plus de sujets relatifs à : Comment retrouver la clé primaire d'une insertion toute fraîche ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR