Recuperer ID pas encore crée

Zachs Messages postés 202 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 10 février 2009 - 30 mai 2008 à 15:14
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 - 2 déc. 2008 à 22:58
Hello j'aimerai pouvoir recuperer l'ID d'un enregistrement que je n'ai pa encore crée pour ou qu'une fois qu'il est crée je puisse le reprendre pour l'integrer dans une autre requete. Et apart l'ID je n'ai aucun autre champ unique.

exemple :
INSERT INTO Event (EventName) VALUES ('Des fleures')
INSERT INTO LinkMatos (EventID, MatosID) VALUES (EventID(precedement crée), 3)

<hr size="2" width="100%" />  (^o^) (x_x) (o_o*) (o_o') (O_O) (OoO) (>_<) (=_=)

3 réponses

yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
30 mai 2008 à 23:12
Salut,

il suffit d'utiliser la variable globale @@identity  ou la fonction locale à la session  scope_identity()

pour reprendre ton exemple :

INSERT INTO Event (EventName) VALUES ('Des fleures')
INSERT INTO LinkMatos (EventID, MatosID) VALUES (scope_identity(), 3)
0
cs_deutsch Messages postés 58 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 1 avril 2010
2 déc. 2008 à 08:54
Salut,
je crois peut etre que

select max(id) from ta-table

est la meilleur solution

A +
0
yann_lo_san Messages postés 1137 Date d'inscription lundi 17 novembre 2003 Statut Membre Dernière intervention 23 janvier 2016 26
2 déc. 2008 à 22:58
salut,



deutsh, je ne suis pas d'accord avec ta solution, qui peut marcher en local avec 1 utilisateur sur la base.
Mais si les SGBD propose des compteurs d'identité (sql-server) ou de séquence (oracle) c'est justement pour éviter les max()+1 !!
Il faut penser accès concurent et session pour ce genre de problème.
Il y a par exemple la fonction NEWID() sur une colonne de type uniqueidentifier qui peut aussi résoudre ce cas.
C'est vraiment pas la peine de se farcir des max+1...
0
Rejoignez-nous