[Bruit][Mysl] L'identifiant automatique
Le
Roumégou Eric
Bonjour,
du bruit mais pour ceux qui comme moi ont choisi mySQL comme sgbd de
prédilection
J'utilise pour la plupart de mes tables un identifiant technique en
autoincrement.
Après une création (insert) on a souvent besoin de récupérer l'id, donc
un Select last_insert_id() nous permet de récupérer ceci sans pb.
Normalement j'ai ma clé technique (auto increment) et la clé
externe(ref du client). En l'absence de cette dernière, je dois lui en
générer une par un algo quelconque (car cette clé est aussi obligatoire
ds mon systeme) , voire reproduire ma clé primaire dans cette zone.
D'où la necessite de refaire un update après mon insert et avoir
récupéré ma clé primaire (select last-insert_id())
N'y aurait-il pas un moyen magique de spécifier dès l'ordre insert que
l'on veut dupliquer l'id primaire ?
en écrivant ce message, je me suis dit que je n'avais jamais testé un
truc simple
insert into adress (adr_nom,adr_prenom,ppl_id)
values('DUBOIS','RENE',last_insert_id())
Hélas, le last_insert_id() correspond (logique) à ma précédente
insertion.
Donc un truc ??
je viens de repotasser le site mysql, mais je doute un peu que cela
soit possible.
Merci de vos réponses
--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
du bruit mais pour ceux qui comme moi ont choisi mySQL comme sgbd de
prédilection
J'utilise pour la plupart de mes tables un identifiant technique en
autoincrement.
Après une création (insert) on a souvent besoin de récupérer l'id, donc
un Select last_insert_id() nous permet de récupérer ceci sans pb.
Normalement j'ai ma clé technique (auto increment) et la clé
externe(ref du client). En l'absence de cette dernière, je dois lui en
générer une par un algo quelconque (car cette clé est aussi obligatoire
ds mon systeme) , voire reproduire ma clé primaire dans cette zone.
D'où la necessite de refaire un update après mon insert et avoir
récupéré ma clé primaire (select last-insert_id())
N'y aurait-il pas un moyen magique de spécifier dès l'ordre insert que
l'on veut dupliquer l'id primaire ?
en écrivant ce message, je me suis dit que je n'avais jamais testé un
truc simple
insert into adress (adr_nom,adr_prenom,ppl_id)
values('DUBOIS','RENE',last_insert_id())
Hélas, le last_insert_id() correspond (logique) à ma précédente
insertion.
Donc un truc ??
je viens de repotasser le site mysql, mais je doute un peu que cela
soit possible.
Merci de vos réponses
--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)

Poser une question


Salut,
Tu peux prendre le problème à l'envers en considérant le dernier id d e
la table et en l'incrémentant:
insert into adress (adr_nom,adr_prenom,ppl_id)
values('DUBOIS','RENE',(select max(id)+1 from address))
Adrien
merci de ta réponse mais on n'est pas ds de l'id auto et aucune
garantie que cela ne rentre pas en colision avec un insert fait en même
tps.
--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
La solution serait d'avoir un systeme qui genere des cles pour tes
tables et ne pas se servir des autoincrement de tes tables.
Ainsi tu fais une demande d'id à ton systeme.
Et tu t'en sers lors de l'insert dans ta table
Le systeme peut etre une simple table mysql constituée uniquement d'un
autoincrement.
PYT
bonjour,
utilise un trigger after insert ?
--
Cordialement JeAn-PhI
mysql 4.22
pas de trigger je crois
et c'est un traitement que je ne veux pas de façon systématique.
--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)