Secuencias Oracle: cómo se crean, reinician, actualizan…

Secuencias Oracle: cómo se crean, reinician, actualizan…

En este artículo te enseñamos una manera sencilla de resetear una secuencia (SEQ) en Oracle con el comando NEXTVAL y modificar el contador. Las secuencias son útiles para cuando queremos crear un objeto que dé lugar a valores enteros unívocos.

¿Cómo crear, reiniciar y actualizar una secuencia en Oracle?

  • Para crear una secuencia SEQ (nombre de la secuencia):
CREATE SEQUENCE SEQ;
START WITH valor
INCREMENT BY valor
MAXVALUE valor
MINVALUE valor
CACHE valor / NOCACHE 
CICLE
ORDER;
  • Para ver su valor actual:
SELECT SEQ.CURRVAL FROM DUAL;
  • Para modificar la secuencia, utilizamos "INCREMENT by" y para reiniciar la secuencia a 1 asignaos el valor -1 a VAL:
ALTER SEQUENCE SEQ INCREMENT by -VAL;
  • Después hay que ejecutar el comando que va a reiniciar la secuencia:
SELECT SEQ.NEXTVAL FROM DUAL;
  • Y finalmente restablecemos el incremento de la secuencia:
ALTER SEQUENCE SEQ INCREMENT by 1;

Ejemplo

-- Creamos una secuencia llamada "seq"

create sequence seq;


-- Solicitamos el siguiente valor de "seq"

select seq.nextval from dual; -- Output: 1


-- Solicitamos nuevamente el siguiente valor de "seq"

select seq.nextval from dual; -- Output: 2


-- Solicitamos una vez más el siguiente valor de "seq"

select seq.nextval from dual; -- Output: 3


-- Consultamos el valor actual de "seq"

select seq.currval from dual; -- Output: 3


-- Cambiamos la secuencia "seq" para que avance 2 números hacia atrás

alter sequence seq increment by -2; -- Esto hace que el siguiente valor sea 1


-- Solicitamos el siguiente valor de "seq" después de cambiar el incremento

select seq.nextval from dual; -- Output: 1


-- Reestablecemos la secuencia "seq" para que avance 1 número hacia adelante

alter sequence seq increment by 1;

Base de datos