Si el incremento automático no es lo suficientemente bueno para sus necesidades, puede crear un mecanismo de secuencia atómica con n secuencias nombradas como esta:
Crea una tabla para almacenar tus secuencias:
CREATE TABLE sequence (
seq_name varchar(20) unique not null,
seq_current unsigned int not null
);
Suponiendo que tiene una fila para 'foo' en la tabla, puede obtener atómicamente la siguiente identificación de secuencia como esta:
UPDATE sequence SET seq_current = (@next := seq_current + 1) WHERE seq_name = 'foo';
SELECT @next;
No se requieren cerraduras. Ambas declaraciones deben ejecutarse en la misma sesión, de modo que la variable local @next se defina realmente cuando ocurra la selección.