Récuperer le numéro automatique qui identifie un enregistrement
BasicZx81
Messages postés140Date d'inscriptionsamedi 5 mars 2011StatutMembreDernière intervention13 août 2013
-
20 janv. 2012 à 17:46
BasicZx81
Messages postés140Date d'inscriptionsamedi 5 mars 2011StatutMembreDernière intervention13 août 2013
-
21 janv. 2012 à 11:31
Bonsoir,
Cela fait plusieurs jours que je cherche une solution pour savoir comment procéder pour obtenir un ou plusieurs numéros d'enregistrements unique dans un environnement multi-utilisateurs.
J'ai donc une table avec une clé primaire sur le champ "ID" du type : numéro incrémenté automatiquement. j'ai lu qu'il suffisait de ne rien mettre dans le champ ID pour que le moteur de la base de données se charge de numéroter chaque enregistrements. Dans ce cas comment faut t'il procéder quand ces numeros sont en reletion avec une autre table qu'il faut aussi mettre à jour ? . Il faudrait pour cela connaitre ces numéros, hors ceux-ci ne sont connus qu'aprés l'enregistrements dans la base.
Faut t'il enregistrer lignes par lignes ou tout en bloc ? Mon appli n'est pas encore develloppé, je suis justement en train de réflechir pour structurer mon programme et mes tables donc je peux m'adapter si besoin.
merci pour vos conseils éclairés si vous pouvez m'aider car je ne vois pas du tout comment mettre en place une méthode fiable.
A voir également:
Récuperer le numéro automatique qui identifie un enregistrement
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 20 janv. 2012 à 18:22
Bonjour,
Il faudrait pour cela connaitre ces numéros, hors ceux-ci ne sont connus qu'aprés l'enregistrements dans la base.
Ces numéros sont dans une série incrémentable de 1 à chaque enregistrement. il te suffit donc de connaître le dernier, en triant sur cet idart
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
BasicZx81
Messages postés140Date d'inscriptionsamedi 5 mars 2011StatutMembreDernière intervention13 août 2013 20 janv. 2012 à 21:16
Bonsoir et merci pour les réponses.
j'ai trouvé un exemple de code pour utiliser "INSERT .....;SELECT scope_identity;", si j'ai bien compris cette commande permet de récupérer un numéro d'enregistrement fourni par la base lors de l’exécution de la commande INSERT. Cependant j’aurais du préciser que je travaille sur un dataset, comment je peux appliquer cette méthode dans ce cas ? Le dataset étant en mode deconnecté je m'arrache vraiment les cheuveux pour savoir comment fournir ce numéro au dataset ?
BasicZx81
Messages postés140Date d'inscriptionsamedi 5 mars 2011StatutMembreDernière intervention13 août 2013 20 janv. 2012 à 22:25
Rebonsoir, je crois avoir trouvé une piste qui me parait plus facile et plus sure, j'espère que vous me direz ce que vous en pensé.
Plutôt que d'essayer d'anticiper les conflits et chercher à récupérer un numéro dont je ne serais même pas sûre qu'il ne soit pas déjà utilisé au moment ou je le récupére. Je vais tenter la solution suivante, je remplace le champ numéroAuto par un champ numérique et j'affecte la valeur n à mon numéro d'enregistrement, ensuite j'enregistre et je fait une gestion des conflits dans l'evenement rowupdated. Si il y a conflit j'incremente le numéro à n+1 et je réessaye un enregistrement jusqu'a ce que ca passe.
Vous en pensez quoi ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
BasicZx81
Messages postés140Date d'inscriptionsamedi 5 mars 2011StatutMembreDernière intervention13 août 2013 21 janv. 2012 à 08:08
Bonjour, merci casy d'essayer de m'aider.
Utiliser une table compteur ? je n'y avais pas pensé. Mais quelle est la différence ? Si je stocke le numéro directement dans ma table ou dans une table dédié cela reviens au même non ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 21 janv. 2012 à 10:49
La différence peut être notamment que, au lieu d'être obliger de parcourir toute une table pour identifier le dernier n° utilisé, tu l'a directement dans une table avec une seule ligne, donc plus rapidement.
L'autre différence est que si ce problème se pose sur plusieurs tables, et donc plusieurs compteurs, tu peux tous les rassembler à un seul endroit.
Après, tout dépend de ton architecture et de ton besoin. Moi, perso, je suis plus partisan du n° automatique, mais je travaille pas avec les datasets habituellement tout au moins pour de l'insertion, surtout si c'est de l'insertion avec relation.
[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i