Como dice Orbman, la forma estándar de hacerlo es con una secuencia. Lo que la mayoría de las personas también hace es juntar esto con un disparador de inserción. Por lo tanto, cuando se inserta una fila sin una identificación, el disparador se dispara para completar la identificación 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 desencadenador en Oracle.
posible duplicado de http://stackoverflow.com/questions/317001/autoincrement-in-oracle – DCookie