Para crear un campo auto-numérico en Oracle es decir un
campo en el que se valla generando un valor automáticamente es necesario
utilizar dos elementos las secuencias y los trigger. Como ejemplo he creado una
pequeña tabla que llamado “EMPLEADOS” con la siguiente estructura:
CREATE TABLE PROGRAMADOR.EMPLEADOS
(
ID_EMP
NUMBER,
NOMBRE_EMP VARCHAR2(100)
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
NOMONITORING;
El campo que vamos a hacer auto-numérico va será el campo “ID_EMP”.
Paso 1: Crear la
secuencia
CREATE SEQUENCE PROGRAMADOR.MISECUENCIA
START WITH 1 -- Por donde empieza a contar
la secuencia
INCREMENT BY 1 -- Incremento
MINVALUE 1 -- Valor mínimo
NOCACHE
NOCYCLE
NOORDER;
Paso 2: Crear el trigger
CREATE OR REPLACE TRIGGER PROGRAMADOR.TRIGGER_EMPLEADOS -- Nombre del trigger
BEFORE INSERT -- Cuando se lanzara el
trigger. Aquí se apuesto antes de insertar
ON PROGRAMADOR.EMPLEADOS -- Para asociar a la tabla
empleados
REFERENCING NEW AS New OLD AS Old
FOR
EACH ROW
DECLARE
tmpVar NUMBER; -- Variable temporal para
recoger el valor de la secuencia
BEGIN
tmpVar := 0;
-- Obtenemos el valor de la
secuencia
SELECT MISECUENCIA.NEXTVAL INTO tmpVar FROM DUAL;
:NEW.ID_EMP := tmpVar;
EXCEPTION
WHEN OTHERS
THEN
--
Consider logging the error and then re-raise
RAISE;
END;
Con esto ya podemos usar nuestro campo auto-numérico para
ello vamos a generar dos registros.
INSERT INTO PROGRAMADOR.EMPLEADOS (NOMBRE_EMP)
VALUES ('David');
INSERT INTO PROGRAMADOR.EMPLEADOS (NOMBRE_EMP)
VALUES ('Pepe');
Aquí podemos ver los datos insertados con la generación del
campo auto-numérico.
No hay comentarios:
Publicar un comentario