Wie Orbman sagt, ist die Standardmethode dafür eine Sequenz. Was die meisten Leute auch tun, ist dies mit einem Insert-Trigger zu koppeln. Wenn also eine Zeile ohne ID eingefügt wird, wird der Trigger ausgelöst, um die ID für Sie aus der Sequenz auszufüllen.
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;
Dies ist einer der wenigen Fälle, in denen es sinnvoll ist, einen Trigger in Oracle zu verwenden.