Bonjour à tous,
Dans une table "abonnes" j'ai une clé primaire "id" auto incrémentée, ce qui me permet d'avoir un numéro d'abonné unique et créé automatiquement.
Après le INSERT, un lastInsertId() me permet de récupérer ce numéro d'abonné.
Pour être sur de récupérer le bon 'lastInsertId' j'utilise un LOCK TABLES abonnes WRITE (le lastInsertId() donne l'id de la dernière insertion réalisée dans la base, toutes sessions confondues)
Ce qui me donne en gros
Jusque-là je pense que j'ai bon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 LOCK TABLES abonnes WRITE INSERT INTO abonnes ..... lastInsertId() UNLOCK TABLES
Mais ....
J'ai un TRIGGER ON INSERT sur ma table 'abonnes' pour aller mettre une autre table à jour. Dans ce trigger j'ai besoin de connaitre mon numéro d'abonné, et donc je fais aussi un lastInsertId().
La question est : est-ce que le trigger s'exécute bien dans la séquence LOCK/UNLOCK ?? suis-je certain, dans mon trigger, de récupérer le bon numéro d'abonné ?
Bien sur un test montre que ça marche, mais on ne pas pas tester une rafale de création d'abonnés, pour s'assurer que les lastInsertId() sont bons.
Si un Pro de mysql pouvait m'éclairer, ce serait cool.
Merci
YC
Partager