domingo, 9 de junio de 2013

Oracle crear campo auto-numérico

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