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

Comment créer une séquence dans MySQL ?

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.