Oracle/PLSQL: Secuencia (Autonumérico)

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

Oracle/PLSQL: Secuencia (Autonumérico)

Este tutorial de Oracle describe cómo Crear y eliminar secuencias Sintaxis y ejemplos en Oracle.

describir

En Oracle, puede usar secuencias para crear campos de numeración automática. Una secuencia es un objeto en Oracle que se utiliza para generar secuencias de números. Esto es útil cuando necesita crear un número único como clave principal.

Crear una secuencia

Es posible que desee crear una secuencia en Oracle para manejar campos de numeración automática.

sintaxis

La sintaxis para crear una secuencia en Oracle es:

CREATE SEQUENCE sequence_name
  MINVALUE value
  MAXVALUE value
  START WITH value
  INCREMENT BY value
  CACHE value;

nombre_secuencia El nombre de la secuencia que desea crear.

ejemplo

Veamos un ejemplo de cómo crear una secuencia en Oracle.

Por ejemplo:

CREATE SEQUENCE supplier_seq
  MINVALUE 1
  MAXVALUE 999999999999999999999999999
  START WITH 1
  INCREMENT BY 1
  CACHE 20;

Esto creará un objeto de secuencia llamado supplier_seq. El primer número de secuencia que usará es 1, y cada número de secuencia subsiguiente se incrementará en 1 (es decir: 2,3,4,…}. Almacenará en caché hasta 20 valores para mejorar el rendimiento.

Si omite la opción MAXVALUE, su secuencia se establecerá automáticamente en:

MAXVALUE 999999999999999999999999999

Por lo tanto, puede simplificar el comando CREAR SECUENCIA de la siguiente manera:

CREATE SEQUENCE supplier_seq
  MINVALUE 1
  START WITH 1
  INCREMENT BY 1
  CACHE 20;

Ahora que ha creado un objeto de secuencia para simular un campo de numeración automática, le mostraremos cómo recuperar un valor del objeto de secuencia. Para recuperar el siguiente valor en orden de secuencia, debe usar nextval.

Por ejemplo:

supplier_seq.NEXTVAL;

Esto recuperará el siguiente valor de supplier_seq. La sentencia nextval es necesaria en la sentencia SQL. Por ejemplo:

INSERT INTO suppliers
(supplier_id, supplier_name)
VALUES
(supplier_seq.NEXTVAL, 'Kraft Foods');

La declaración de inserción insertará un nuevo registro en la tabla de proveedores. Al campo ID del proveedor se le asignará el siguiente número de la secuencia del proveedor. El campo Nombre del proveedor se establecerá en Kraft Foods.

secuencia de caída

Después de crear una secuencia en Oracle, es posible que deba eliminarla de la base de datos.

sintaxis

La sintaxis para eliminar una secuencia en Oracle es:

DROP SEQUENCE sequence_name;

nombre_secuencia El nombre de la secuencia que se va a eliminar.

ejemplo

Veamos un ejemplo de cómo eliminar una secuencia en Oracle.

Por ejemplo:

DROP SEQUENCE supplier_seq;

Este ejemplo elimina la secuencia denominada supplier_seq.

Preguntas frecuentes

Una pregunta común acerca de las secuencias es:

Pregunta: ¿Qué significan las opciones de caché y nocaché al crear una secuencia? Por ejemplo, puede crear una secuencia con un caché de 20 de la siguiente manera:

CREATE SEQUENCE supplier_seq
  MINVALUE 1
  START WITH 1
  INCREMENT BY 1
  CACHE 20;

O puede crear la misma secuencia con la opción nocache:

CREATE SEQUENCE supplier_seq
  MINVALUE 1
  START WITH 1
  INCREMENT BY 1
  NOCACHE;

Respuesta: Para una secuencia, la opción de caché especifica cuántos valores de secuencia almacenar en la memoria para un acceso más rápido.

La desventaja de usar un caché para crear una secuencia es que, en caso de que falle el sistema, todos los valores de secuencia almacenados en caché No Cuando se usa, se “pierde”. Esto provoca “lagunas” en los valores de secuencia asignados. Cuando el sistema se reinicia, Oracle almacenará en caché los nuevos números desde donde se quedaron en la secuencia, ignorando los llamados valores de secuencia “faltantes”.

propina: Para recuperar un valor de secuencia perdido, siempre puede ejecutar el comando ALTER SEQUENCE para restablecer el contador al valor correcto.

Nocache significa que no se almacenan valores de secuencia en la memoria. Esta opción puede sacrificar algo de rendimiento; sin embargo, no debería encontrar lagunas en los valores de secuencia asignados.

Pregunta: ¿Cómo establecemos el valor LASTVALUE en una secuencia de Oracle?

Respuesta: Puede cambiar el ÚLTIMO VALOR de una secuencia de Oracle ejecutando el comando ALTER SEQUENCE.

Por ejemplo, si el último valor utilizado por una secuencia de Oracle fue 100 y desea restablecer la secuencia para tener 225 como el siguiente valor. Ejecutará los siguientes comandos.

ALTER SEQUENCE seq_name
INCREMENT BY 124;

SELECT seq_name.nextval FROM dual;

ALTER SEQUENCE seq_name
INCREMENT BY 1;

Ahora el siguiente valor proporcionado por la secuencia será 225.