sábado, 9 de junio de 2012

Autoincremento en ORACLE


Campo de autoincremento en ORACLE

Ejemplo, la tabla 'TBLDETALLE_PEDIDOS' y tendrá dos campos, del cual id_cliente será el autoincrement.

create table  TBLDETALLE_PEDIDOS (
id_cliente number PRIMARY KEY,
pedido varchar2(20));


Luego será necesario crear una secuencia que se encargue de hacer el incremento,  'secuencia_id_detallepedido', comenzará desde el valor 1 y se incrementará de uno.

create sequence secuencia_id_detallepedido
   start with 1 
   increment by 1 
   nomaxvalue;

Se crea un trigger, el cual hará elautoincremento cada vez que se realice un insert a esta tabla. 

create trigger trig_id_pedido
before insert on TBLDETALLE_PEDIDOS
for each row
begin
select  secuencia_id_detallepedido.nextval into :new.id_cliente from dual;
end;

Luego los insert a la tabla '
TBLDETALLE_PEDIDOS', serían de la forma:

insert into 
TBLDETALLE_PEDIDOS values ('pedido');

O de la forma:

insert into  TBLDETALLE_PEDIDOS values (null,'pedido');

4 comentarios:

  1. A mi me sale este erro:

    Error code 4098, SQL state 42000: ORA-04098: trigger 'HCOARITE.TRIG_ID_PEDIDO' is invalid and failed re-validation

    ResponderEliminar
  2. Revisa el estado del trigger,
    select object_name from dba_objects where object_type = 'TRIGGER' and status = 'INVALID';

    una opción es que lo elimines y lo crees de nuevo, pero tambien seria buen ver el código que estás haciendo.

    ResponderEliminar