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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  recupérer l'identifiant d'un element qu'on vient de créer

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

recupérer l'identifiant d'un element qu'on vient de créer

n°238092
azra28
Posté le 31-10-2002 à 17:53:51  profilanswer
 

En fait ds ma requete INSERT, j'ajoute le nom d'un utilisateur, l'identifiant de cet utilisateur est de type autonumber, existe t'il une solution pr recup ce nombre ds la meme requete ou alors autre soluce ?????????
 
 
Merci d'avance

mood
Publicité
Posté le 31-10-2002 à 17:53:51  profilanswer
 

n°238093
Fred999
Rabat-joie
Posté le 31-10-2002 à 17:56:38  profilanswer
 

Précise le SGBD stp ;=)

n°238095
azra28
Posté le 31-10-2002 à 17:57:44  profilanswer
 

en fait c'est access ms je ne voudrais pas etre limité par le SGBD

n°238099
Fred999
Rabat-joie
Posté le 31-10-2002 à 17:58:27  profilanswer
 

Si tu ne veux pas être limité, fais un select max(id) sur ta table juste après l'insertion.

n°238100
azra28
Posté le 31-10-2002 à 18:00:58  profilanswer
 

le pb c'est que si qqn fait un insert pendant que je suis entre mon insert et mon select max(id) chuis ds la merde

n°239774
drasche
Posté le 05-11-2002 à 12:56:02  profilanswer
 

tu programmes en quoi et quelle API?  ADO? DAO?


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°239806
antp
Super Administrateur
Champion des excuses bidons
Posté le 05-11-2002 à 14:05:45  profilanswer
 

azra28 a écrit a écrit :

le pb c'est que si qqn fait un insert pendant que je suis entre mon insert et mon select max(id) chuis ds la merde




 
faut bloquer les insertions entre les deux alors (transations) mais je sais pas si c'est possible...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°239809
Fred999
Rabat-joie
Posté le 05-11-2002 à 14:10:48  profilanswer
 

azra28 a écrit a écrit :

le pb c'est que si qqn fait un insert pendant que je suis entre mon insert et mon select max(id) chuis ds la merde




 
Si tu es sur une appli pro, effectivement ça peut merdouiller.
 
Si tu es sur un site amateur, il y a 0.00000001% de chances qu'un tel cas se produise :D
 
Et je vois que tu es sous Access, donc a priori la soluce du max+1 est plausible :o

n°239824
drasche
Posté le 05-11-2002 à 14:43:38  profilanswer
 

une solution employée est d'avoir une table contenant ces fameuses valeurs à incrémenter.  Ainsi tu iras chercher tes nouveaux ID dans cette table (un row par table qui possède un ID auto incrémenté).  Comme tu lockeras cette table au moment de prendre une nouvelle valeur, tu n'as pas de risque que deux rows d'une table se retrouvent avec le même id.  Cette astuce te dispense d'avoir des propriétés auto_increment.
 
J'ai fait court, mais j'espère que c'était quand même compréhensible ;-)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°239834
azra28
Posté le 05-11-2002 à 15:02:31  profilanswer
 

C'est bien la soluce que g retennu, ms il peu tjrs avoir qqn qui fait une insertion pendant le meme tps

mood
Publicité
Posté le 05-11-2002 à 15:02:31  profilanswer
 

n°239846
drasche
Posté le 05-11-2002 à 15:19:44  profilanswer
 

ben si tu lockes la table pour toi, pendant que tu fais ton incrémentation, personne d'autre ne peut en faire une.  Donc s'il ne peut faire l'incrémentation de l'ID, il pourra pas insérer une row.  zéro risque comme ça ;)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°239870
Fred999
Rabat-joie
Posté le 05-11-2002 à 15:35:10  profilanswer
 

azra28 a écrit a écrit :

C'est bien la soluce que g retennu, ms il peu tjrs avoir qqn qui fait une insertion pendant le meme tps




 
Il y a combien d'utilisateurs en même temps?

n°239872
darklord
You're welcome
Posté le 05-11-2002 à 15:35:53  profilanswer
 

Fred999 a écrit a écrit :

Si tu ne veux pas être limité, fais un select max(id) sur ta table juste après l'insertion.




 
 :ouch: le truc super fiable  :heink:


---------------
Just because you feel good does not make you right
n°239880
Fred999
Rabat-joie
Posté le 05-11-2002 à 15:37:41  profilanswer
 

DarkLord a écrit a écrit :

 
 
 :ouch: le truc super fiable  :heink:  




 
Et tu fais ça comment sinon?
 
C'est de l'Access, et, encore une fois, il faut voir les risques encourus par rapport à la somme de travail nécessaire.
 
S'il ne peut pas locker les tables...
 
Edit : ou alors, il faut abandonner l'idée d'un champ  autoincrémentable, et prendre, par exemple, l'heure système du serveur, à la miliseconde, ça devrait suffire non? :D


Message édité par Fred999 le 05-11-2002 à 15:38:55
n°239889
darklord
You're welcome
Posté le 05-11-2002 à 15:45:22  profilanswer
 

bin en Access déjà faut pas espérer pouvoir faire ce genre de choses de manière fiable. C'est comme si on ne regardait pas les limites des logiciels.  
 
Tout n'est pas toujours possible non plus hein :o


---------------
Just because you feel good does not make you right
n°239892
Fred999
Rabat-joie
Posté le 05-11-2002 à 15:47:20  profilanswer
 

DarkLord a écrit a écrit :

bin en Access déjà faut pas espérer pouvoir faire ce genre de choses de manière fiable. C'est comme si on ne regardait pas les limites des logiciels.  
 
Tout n'est pas toujours possible non plus hein :o




 
C'est bien ce que je dis! :D

n°239895
art_dupond
je suis neuneu... oui oui !!
Posté le 05-11-2002 à 15:52:21  profilanswer
 

et en mysql, comment il faut faire ?
 
 
merci


---------------
oui oui
n°239899
drasche
Posté le 05-11-2002 à 15:55:03  profilanswer
 

En informatique, il ne faut jamais rien "se dire", rien assumer, c'est toujours une cause de bugs "en production".  Ca finit toujours par planter.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°239904
Fred999
Rabat-joie
Posté le 05-11-2002 à 15:57:12  profilanswer
 

art_dupond a écrit a écrit :

et en mysql, comment il faut faire ?
 
 
merci




 
Si tu disposes de PHP, utilise la fonction mysql_insert_id()
 

n°239906
art_dupond
je suis neuneu... oui oui !!
Posté le 05-11-2002 à 15:57:32  profilanswer
 

ok merci :)


---------------
oui oui
n°239915
zezette
"Allez hop, au revoir"
Posté le 05-11-2002 à 16:04:30  profilanswer
 

Pour info, avec Postgre lors de l'insertion, il renvoie un Oid et avec cet Oid tu retrouve ton élément sans probleme... (where oid=...)


---------------
"Par moment j'me d'mande si chui pas con" G. de Suresnes
n°240200
azra28
Posté le 05-11-2002 à 23:03:38  profilanswer
 

Enfin, ce que je veux faire, c'est pour un forum et je ne veux pas etre limité par le SGBD choisi, chuis pati sur cette idée..

n°240396
Fred999
Rabat-joie
Posté le 06-11-2002 à 10:48:09  profilanswer
 

Pour un forum?
 
Alors la probabilité que deux users postent un message en même temps est plus que minuscule, regarde ici, c'est super rare que des gens postent dans la même seconde, avec 600 users connectés...
 
Et on ne peut jamais être vraiment indépendant du SGBD, tu dois toujours t'adapter aux qualités et aux défauts ;)

n°240398
azra28
Posté le 06-11-2002 à 10:51:48  profilanswer
 

Fred999 a écrit a écrit :

Alors la probabilité que deux users postent un message en même temps est plus que minuscule, regarde ici, c'est super rare que des gens postent dans la même seconde, avec 600 users connectés...




 
Chuis d'acc, ms bon ça s'appelle du bricolage et j'aime pas trop ça

n°240409
Fred999
Rabat-joie
Posté le 06-11-2002 à 11:28:05  profilanswer
 

Alors crée une file d'attente pour les messages à poster [:spamafote]
 
Edit : j'ai codé un système de championnat de hockey pour 30 utilisateurs, et préfère me coltiner leurs éventuelles insertions simultanées 1 fois dans la saison que de coder un truc pour éviter ça (ce qui sert un ENORME coup de pas de chance), c'est une question de temps/travail.
 
Je me répète : combien d'utilisateurs attends-tu simultanément sur ton forum?


Message édité par Fred999 le 06-11-2002 à 11:29:50
n°240813
azra28
Posté le 06-11-2002 à 17:54:56  profilanswer
 

Pr le nb d'utilisateurs, j'en sais trop rien, je voudrais le mettre en open source qd j'aurais bien avancé...
 
Et c'est surtt pr m'apprendre à dev en asp.net, je connais bien (tres bien meme) asp ms en .net g des choses à apprendre

n°240831
Sh@rdar
Ex-PhPéteur
Posté le 06-11-2002 à 18:22:30  profilanswer
 

un forum sur de l'access, vive la performance / stabilité  :pt1cable:  
 
ne pas être dépendant d'un SGBD à la rigueur, choisir un SGBD totalement inadapté = folie totale
 


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°240833
azra28
Posté le 06-11-2002 à 18:25:28  profilanswer
 

Je sais pr acces, ms au moins je l'ai sous la main et je testerais par la suite sous d'autres SGBD principalement SQL server et MySQL
SInon g trouvé la solution, en ado, il suffit d'executer :SELECT @@IDENTITY AS NewID juste apres et ça rend l'id

mood
Publicité
Posté le   profilanswer
 


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

  recupérer l'identifiant d'un element qu'on vient de créer

 

Sujets relatifs
[Idée] Créer un prog de d/l sur ftp en cascade[C, C++] Récupérer l'enregistrement courant d'une requête
creer OSRécupérer variables formulaires sans POST, direct en php avec pointeur
quelle est la fonction pour récupérer un caractére sans taper entréeRécupérer une sauvegarde de MySQL
recuperer le resultat d'une requette sql avec count(*)[C++,VB] Créer une installation automatique
[Access97] Débutant cherche a créer petite macro.demande aide pour récuperer sous MSQL Server 6.5 une BD suspecte.
Plus de sujets relatifs à : recupérer l'identifiant d'un element qu'on vient de créer


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