Una secuencia es un objeto de base de datos que genera automáticamente una lista incrementada de valores numéricos según la regla especificada en la especificación de secuencia.
Por ejemplo, para insertar automáticamente el número de empleado en la columna (EMPLOYEE_NO) de la tabla, cuando se inserta un nuevo registro en la tabla, entonces usamos una secuencia.
Los valores de secuencia se generan en orden ascendente o descendente.
Las secuencias no están asociadas con las tablas; son utilizadas por la aplicación. Hay dos valores en la secuencia:
SINTAXIS
CREATE SEQUENCE <sequence_name> [<sequence_parameter_list>] [RESET BY <subquery>]
ELEMENTOS DE SINTAXIS
ELEMENTOS | DESCRIPCIÓN |
---|---|
<sequence_name> | Es el nombre de la secuencia. |
[<sequence_parameter_list>] | Especifica uno o más parámetros de secuencia. |
START WITH <start_value> | Describe el valor inicial de la secuencia. |
INCREMENT BY <increment_value> | Especifica el valor que se incrementará desde el último valor asignado cada vez que se genere un nuevo valor de secuencia. El valor predeterminado es 1. |
MAXVALUE <max_value> | Especifica el valor máximo que puede ser generado por la secuencia. <max_value> puede estar entre -4611686018427387903 y 4611686018427387902. |
NO MAXVALUE | Cuando se especifica NO MAXVALUE, para una secuencia ascendente, el valor máximo será 4611686018427387903 y el valor mínimo para una secuencia descendente será -1. |
MINVALUE <min_value> / NO MINVALUE | Especifica el valor mínimo que una secuencia puede generar. <min_value> puede estar entre -4611686018427387904 y 4611686018427387902. Cuando se usa NO MINVALUE, el valor mínimo para una secuencia ascendente es 1. |
CYCLE | La directiva CYCLE especifica que el número de secuencia se reiniciará después de alcanzar su valor máximo o mínimo. |
NO CYCLE | Opción predeterminada. La directiva NO CYCLE especifica que el número de secuencia no se reiniciará después de alcanzar su valor máximo o mínimo. |
CACHE <cache_size> / | El tamaño de la caché especifica cuál rango de números de secuencia se almacenará en un nodo. <cache_size> debe ser un número entero sin signo. |
NO CACHE | Opción predeterminada. La directiva NO CACHE especifica que el número de secuencia no se almacenará en un nodo. |
RESET BY <subquery> | Especifica que durante el reinicio de la base de datos, la base de datos ejecuta automáticamente la <subconsulta> y el valor de la secuencia se reinicia con el valor devuelto. |
Ejemplo –
Crearemos una secuencia con el nombre DHK_SCHEMA.EMP_NO, que creará un valor incrementado de la secuencia en +1 cada vez que se use la secuencia.
Script de secuencia –
CREATE SEQUENCE DHK_SCHEMA.EMP_NO START WITH 100 INCREMENT BY 1.
Aquí utilizaremos el objeto «secuencia» en el siguiente ejemplo para incrementar el valor del número de empleado en +1 cada vez que se ejecute la consulta select. En la consulta, «nextval» se puede usar para generar un número de serie o un requisito similar.
Uso de la secuencia –
SELECT DHK_SCHEMA.EMP_NO.nextval FROM DUMMY;
SALIDA – 100,101,102……En cada ejecución de la consulta de selección anterior.
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073