Orbmanが言うように、それを行う標準的な方法はシーケンスを使用することです。ほとんどの人が行うことは、これを挿入トリガーと組み合わせることです。したがって、IDなしで行が挿入されると、トリガーが起動して、シーケンスからIDを入力します。
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でトリガーを使用することが理にかなっている数少ないケースの1つです。