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

Clave principal de incremento automático en la base de datos de Oracle

Como dice Orbman, la forma estándar de hacerlo es con una secuencia. Lo que la mayoría de la gente también hace es combinar esto con un disparador de inserción. Por lo tanto, cuando se inserta una fila sin ID, el disparador se activa para completar la ID de la secuencia.

CREATE SEQUENCE SEQ_ROLLINGSTOCK_ID START WITH 1 INCREMENT BY 1 NOCYCLE;

CREATE OR REPLACE TRIGGER BI_ROLLINGSTOCK
BEFORE INSERT ON ROLLINGSTOCK
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
 WHEN (NEW.ID IS NULL)
BEGIN
  select SEQ_ROLLINGSTOCK_ID.NEXTVAL
   INTO :NEW.ID from dual;
END;

Este es uno de los pocos casos en los que tiene sentido utilizar un disparador en Oracle.