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;