sql >> Base de Datos >  >> RDS >> Mysql

Emular una SECUENCIA segura para transacciones en MySQL

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.