Autoincrement Primary key in Oracle database Autoincrement Primary key in Oracle database oracle oracle

Autoincrement Primary key in Oracle database


As Orbman says, the standard way to do it is with a sequence. What most people also do is couple this with an insert trigger. So, when a row is inserted without an ID, the trigger fires to fill out the ID for you from the sequence.

CREATE SEQUENCE SEQ_ROLLINGSTOCK_ID START WITH 1 INCREMENT BY 1 NOCYCLE;CREATE OR REPLACE TRIGGER BI_ROLLINGSTOCKBEFORE INSERT ON ROLLINGSTOCKREFERENCING OLD AS OLD NEW AS NEWFOR EACH ROW WHEN (NEW.ID IS NULL)BEGIN  select SEQ_ROLLINGSTOCK_ID.NEXTVAL   INTO :NEW.ID from dual;END;

This is one of the few cases where it makes sense to use a trigger in Oracle.


If you really don't care what the primary key holds, you can use a RAW type for the primary key column which holds a system-generated guid in binary form.

CREATE TABLE RollingStock (    ID RAW(16) DEFAULT SYS_GUID() PRIMARY KEY,   NAME VARCHAR2(80 CHAR) NOT NULL       );