Tratando Secuencias en SQL


Una secuencia es conocida por ser una tabla con un campo numérico en el cual almacenamos un valor.


Las secuencias se nos crean para que nos genere valores enteros únicos y consecutivos.


Lo utilizamos generalmente para generar valores para las claves primarias (pks).


Sentencia crear una secuencia:

  • CREATE SEQUENCE [esquema.] Nombre_secuencia [START WITH número] [INCREMENT BY número] [MAXVALUE número | NOMAXVALUE] [MINVALUE número | NOMINVALUE] [CYCLE | NOCYCLE];


Ejemplo crear una secuencia:

  • CREATE SEQUENCE hr.nueva_seq START WITH 1;


Opciones para crear una secuencia:

  • INCREMENT BY:

  • El valor que vamos a sumar al valor actual.

  • Podemos usar un número negativo o contrario de 0.

  • Si no se indica, por defecto es 1.


  • MAXVALUE:

  • Nos indica el valor máximo que puede obtener la secuencia.

  • Si no se indica, por defecto es 99999999999999999999999999.


  • MINVALUE:

  • Nos indica el valor mínimo al que puede obtener la secuencia.

  • Si no se indica, por defecto es 1.


  • CYCLE:

  • Nos indica cuando lleguemos al valor máximo, se reinicie al mínimo valor nuevamente.

  • Si no se indica, por defecto la secuencia se crea nocycle.


Sentencias para recuperar los valores:

  • NEXTVAL: regresa el siguiente valor del valor actual (incrementándolo o decrementándolo).

  • Ejemplo: SELECT nueva_seq.NEXTVAL FROM dual;


  • CURRVAL: nos regresa el valor actual de la secuencia.

  • Ejemplo: SELECT nueva_seq.currval FROM dual;


Ejemplo de uso de secuencias en un insert:

  • Ejemplo: INSERT INTO hr.jobs VALUES (hr.nueva_seq.currval, 'designer', 1700, 2500);


Sentencia y opciones para modificar una sentencia:

  • ALTER SEQUENCE [esquema.] Nombre_secuencia [INCREMENT BY número] [MAXVALUE número | NOMAXVALUE] [MINVALUE número | NOMINVALUE] [CYCLE | NOCYCLE]

  • El único valor que no se puede modificar de una sentencia es el valor de comienzo.


Ejemplo para incrementar el valor de la secuencia:

  • ALTER SEQUENCE hr.nueva2_seq INCREMENT BY 3;


Sentencia para eliminar una secuencia:

  • DROP SEQUENCE nombre_secuencias;

  • Ejemplo: DROP SEQUENCE nueva2_seq;


Sentencia para ver todas las secuencias a la que se tiene acceso:

  • SELECT * FROM all_sequences;


Sentencia para ver todos los objetos a los que se tiene acceso:

  • SELECT * FROM all_objects;

2 visualizaciones0 comentarios

Entradas Recientes

Ver todo