Recuperer ID pas encore crée

Signaler
Messages postés
202
Date d'inscription
mardi 14 novembre 2006
Statut
Membre
Dernière intervention
10 février 2009
-
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
-
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

Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
24
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)
Messages postés
58
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
1 avril 2010

Salut,
je crois peut etre que

select max(id) from ta-table

est la meilleur solution

A +
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
24
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...