Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :réutiliser l'auto-incrémentation lors de l'insertion

Oui. Comme vous l'avez découvert, la valeur id n'a pas encore été générée dans un déclencheur BEFORE INSERT. Mais vous ne pouvez pas modifier votre valeur NEW.thread dans un déclencheur AFTER INSERT.

Vous ne pouvez pas compter sur la lecture du INFORMATION_SCHEMA, car vous pouvez provoquer une condition de concurrence.

Vous n'aurez qu'à faire l'INSERT, puis exécuter immédiatement :

UPDATE comments SET thread=id WHERE id=LAST_INSERT_ID() AND thread IS NULL;

S'il s'agit d'un commentaire racine.

Voir aussi mes réponses passées sur le sujet similaire :