MariaDB - Secuencias

En la versión 10.0.3, MariaDB introdujo un motor de almacenamiento conocido como secuencia. Su ad hoc genera una secuencia de números enteros para las operaciones y luego termina. La secuencia contiene números enteros positivos en orden descendente o ascendente, y usa un valor inicial, final e incremental.

No permite su uso en múltiples consultas, solo en su consulta original debido a su naturaleza virtual (no escrita en disco). Sin embargo, las tablas de secuencia se pueden convertir en tablas estándar mediante un comando ALTER. Si se elimina una tabla convertida, la tabla de secuencia aún existe. Las secuencias tampoco pueden producir números negativos o rotar al mínimo / máximo.

Instalación del motor de secuencia

El uso de secuencias requiere instalar el motor de secuencia, que MariaDB distribuye como un complemento en lugar de binario. Instálelo con el siguiente comando:

INSTALL SONAME "ha_sequence";

Después de la instalación, verifíquelo:

SHOW ENGINES\G

Recuerde que después de la instalación del motor, no puede crear una tabla estándar con un nombre que use sintaxis de secuencia, pero puede crear una tabla temporal con un nombre de sintaxis de secuencia.

Crear secuencia

Hay dos métodos de creación de secuencias:

  • Cree una tabla y use el atributo AUTO_INCREMENT para definir una columna como autoincremento.

  • Utilice una base de datos existente y utilice una consulta SELECT de secuencia para producir una secuencia. La consulta utiliza la sintaxis seq_ [FROM] _to_ [TO] o seq_ [FROM] _to_ [TO] _step_STEP.

Las mejores prácticas prefieren el uso del segundo método. Revise un ejemplo de creación de una secuencia que se muestra a continuación:

SELECT * FROM seq_77_to_99;

Las secuencias tienen muchos usos:

  • Localice los valores faltantes dentro de una columna para protegerse contra problemas relacionados en las operaciones:

SELECT myseq.seq FROM seq_22_to_28 myseq LEFT JOIN table1 t ON myseq.seq
   = x.y WHERE x.y IS NULL;
  • Construya una combinación de valores -

SELECT x1.seq, x2.seq FROM seq_5_to_9 x1 JOIN seq_5_to_9 x2 ORDER BY 5, 6;
  • Encuentra múltiplos de un número -

SELECT seq FROM seq_3_to_100_step_4;
  • Construya una secuencia de fechas para usar en aplicaciones como sistemas de reserva.
  • Construye una secuencia de tiempo.