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

Emulation d'une SEQUENCE sécurisée pour les transactions dans MySQL

Si l'auto-incrémentation n'est pas assez bonne pour vos besoins, vous pouvez créer un mécanisme de séquence atomique avec n séquences nommées comme ceci :

Créez une table pour stocker vos séquences :

CREATE TABLE sequence (
  seq_name varchar(20) unique not null,
  seq_current unsigned int not null
);

En supposant que vous ayez une ligne pour 'foo' dans le tableau, vous pouvez obtenir de manière atomique l'identifiant de séquence suivant comme ceci :

UPDATE sequence SET seq_current = (@next := seq_current + 1) WHERE seq_name = 'foo';
SELECT @next;

Aucune serrure requise. Les deux instructions doivent être exécutées dans la même session, afin que la variable locale @next soit réellement définie au moment de la sélection.