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

¿Cómo creo una secuencia en MySQL?

Esta es una solución sugerida por el Manual de MySQL :

Si expr se proporciona como un argumento para LAST_INSERT_ID(), la función devuelve el valor del argumento y se recuerda como el siguiente valor que devolverá LAST_INSERT_ID(). Esto se puede usar para simular secuencias:

Cree una tabla para contener el contador de secuencia e inicialícelo:

    mysql> CREATE TABLE sequence (id INT NOT NULL);
    mysql> INSERT INTO sequence VALUES (0);

Use la tabla para generar números de secuencia como este:

    mysql> UPDATE sequence SET id=LAST_INSERT_ID(id+1);
    mysql> SELECT LAST_INSERT_ID();

La instrucción UPDATE incrementa el contador de secuencias y hace que la siguiente llamada a LAST_INSERT_ID() devuelva el valor actualizado. La instrucción SELECT recupera ese valor. La función mysql_insert_id() C API también se puede usar para obtener el valor. Consulte la Sección 23.8.7.37, “mysql_insert_id()”.

Puede generar secuencias sin llamar a LAST_INSERT_ID(), pero la utilidad de usar la función de esta manera es que el valor de ID se mantiene en el servidor como el último valor generado automáticamente. Es seguro para múltiples usuarios porque varios clientes pueden emitir la sentencia UPDATE y obtener su propio valor de secuencia con la sentencia SELECT (o mysql_insert_id()), sin afectar o ser afectados por otros clientes que generan sus propios valores de secuencia.