Както казва Орбман, стандартният начин да го направите е с последователност. Това, което повечето хора също правят, е да съчетаят това със спусък за вмъкване. Така че, когато се вмъкне ред без идентификатор, тригерът се задейства, за да попълни идентификатора вместо вас от последователността.
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;
Това е един от малкото случаи, в които има смисъл да се използва тригер в Oracle.