sql >> Base de Datos >  >> RDS >> Oracle

Columna de incremento automático:secuencia como valor predeterminado en Oracle

La columna de incremento automático es un requisito bastante común en la codificación. Estas son algunas de las formas de obtener eso en Oracle

Incremento automático en Oracle

Esta función (Columna de incremento automático de Oracle - Secuencia como valor predeterminado) no está presente en la base de datos de Oracle hasta el momento. Pero con 12c, Oracle puede proporcionar eso.

Supongamos que queremos configurar una tabla de Oracle donde la secuencia debe incrementarse automáticamente al insertar. Hay muchas formas de lograrlo

Opción 1
Antes de Oracle 12c, necesitamos usar disparadores antes de insertar para lograrlo

crear tabla test_lab(número de identificación nombre de clave principal varchar (10));crear secuencia test_lab_seq comenzar con 1 incremento por 1 nocycle;crear o reemplazar disparador test_lab_bef_autobefore insertar en test_labpara cada filacomienzoseleccione test_lab_seq.nextval en :new.idfrom dual;end; //pre> 

o

cree o reemplace el disparador test_lab_bef_auto
antes de insertar en test_lab
para cada fila
begin
:new.id :=test_lab_seq.nextval;
end;
/

Podemos especificar cuándo la identificación es nula en los activadores para evitar errores cuando la declaración de inserción tiene un valor de la columna de identificación

insertar en los valores de test_lab ('john');insertar en los valores de test_lab ('scott');insertar en los valores de test_lab ('bill');insertar en los valores de test_lab ('tom');insertar en los valores de test_lab ('Duke ');commit;seleccione * de test_lab;

Opción 2:
Con Oracle 12c, podemos asignar directamente nextval de secuencia como un valor predeterminado para una columna, por lo que ya no necesita crear un disparador para llenar la columna con el siguiente valor de la secuencia, solo necesita declararlo con la definición de la tabla.

crear secuencia test_lab_seq comenzar con 1 incremento por 1 nocycle;crear tabla test_lab(número de id por defecto test_lab_seq.nextval clave primaria);insertar en valores test_lab ('Cat1');insertar en valores test_lab ('Cat2');insertar en valores de test_lab ('Cat3');insertar en valores de test_lab ('Cat4');insertar en valores de test_lab ('Cat5');commit;select * from test_lab;

Opción 3
Con 12c, podemos usar la función de identificación

crear tabla test_lab (número de identificación (10) GENERADO COMO IDENTIDAD, nombre varchar (15)); tabla creada. Desc TEST_LABName ¿Nulo? Tipo---- ---- ----ID NO NULO NÚMERO(10)NOMBRE VARCHAR2(15)
  • Podemos ver que la restricción NOT NULL se impone automáticamente en la columna Identidad
  • Oracle usa internamente la secuencia para completar los valores de columna de incremento automático.
insertar en los valores de test_lab ('Londres');insertar en los valores de test_lab ('Nueva york');insertar en los valores de test_lab ('Tokyo');insertar en los valores de test_lab ('Delhi');insertar en los valores de test_lab (' Bangalore');commit;select * from test_lab;

Artículos de Oracle Sql relacionados

cómo crear una tabla en Oracle
Cómo crear vistas de Oracle
Consultas Top-N y Paginación
cómo escribir consultas sql
Procesamiento de decodificación de Oracle sql