INGRESAR

REGISTRARSE
Buscador

Tratando secuencias en sql

2024-04-05

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;