|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : août 2004 Messages : 61 ![]() |
Bonjour,
Je souhaite récupérer l'id de l'enregistrement que je viens d'insérer dans une table. Le seul moyen est d'utiliser la commande suivante : Code :
SELECT GEN_ID(generator, 0) FROM RDB$DATABASE Je pense qu'il est alors nécéssaire de passer par une transaction. Suis-je sur la bonne voie ? Quelle serait la syntaxe ? Merci Benoît |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Non vous faites fausse route.
Le "GEN_ID(generator, 0)" permet en effet de connaitre la valeur du gérérateur. Mais comme vous l'avez deviné rien ne vous dira que ce résultat correspond bien à votre insertion. En fait il faut procédé différement, 1/ Vous faites un select gen_id(generator,1) from rdb$database. Afin de récupérer un numéro unique. 2/ Vous utiliser ce résultat pour votre insertion (dans la clé primaire). Les générateurs sont hors transaction ce qui veux dire qu'à partir du moment ou vous avez demandé un identifiant, si vous annulez la transaction, le générateur n'est pas annulé (donc garde la valeur qu'il vous aura donné). |
|
|
00
|
|
|
#3 |
|
Membre éclairé
![]() Inscription : décembre 2004 Messages : 379 ![]() |
on peux aussi utiliser une procédure stockée, qui obtient le numéro, insert et retourne le numéro.
de la sorte, il n'y a plus qu'une seule requête pour le tout. |
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Inscription : août 2004 Messages : 61 ![]() |
Merci pour tout
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com