Som Orbman säger, är standardsättet att göra det med en sekvens. Vad de flesta också gör är att koppla ihop detta med en inserttrigger. Så när en rad infogas utan ID, aktiveras utlösaren för att fylla i ID:t åt dig från sekvensen.
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;
Detta är ett av få fall där det är vettigt att använda en trigger i Oracle.