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.