C'est une solution suggérée par le Manuel MySQl :
Si expr est donné comme argument à LAST_INSERT_ID(), la valeur de l'argument est retournée par la fonction et est mémorisée comme la prochaine valeur à retourner par LAST_INSERT_ID(). Ceci peut être utilisé pour simuler des séquences :
Créez une table pour contenir le compteur de séquences et initialisez-le :
mysql> CREATE TABLE sequence (id INT NOT NULL); mysql> INSERT INTO sequence VALUES (0);
Utilisez le tableau pour générer des numéros de séquence comme ceci :
mysql> UPDATE sequence SET id=LAST_INSERT_ID(id+1); mysql> SELECT LAST_INSERT_ID();
L'instruction UPDATE incrémente le compteur de séquences et provoque le prochain appel à LAST_INSERT_ID() pour renvoyer la valeur mise à jour. L'instruction SELECT récupère cette valeur. La fonction API C mysql_insert_id() peut également être utilisée pour obtenir la valeur. Voir Section 23.8.7.37, « mysql_insert_id() ».
Vous pouvez générer des séquences sans appeler LAST_INSERT_ID(), mais l'utilité d'utiliser la fonction de cette façon est que la valeur ID est conservée dans le serveur comme la dernière valeur générée automatiquement. Il est multi-utilisateurs sécurisé car plusieurs clients peuvent émettre l'instruction UPDATE et obtenir leur propre valeur de séquence avec l'instruction SELECT (ou mysql_insert_id()), sans affecter ou être affectés par d'autres clients qui génèrent leurs propres valeurs de séquence.