Oracle
 sql >> Base de données >  >> RDS >> Oracle

Clé primaire d'auto-incrémentation dans la base de données Oracle

Comme le dit Orbman, la manière standard de le faire est avec une séquence. Ce que la plupart des gens font également, c'est de coupler cela avec un déclencheur d'insertion. Ainsi, lorsqu'une ligne est insérée sans ID, le déclencheur se déclenche pour remplir l'ID pour vous à partir de la séquence.

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;

C'est l'un des rares cas où il est logique d'utiliser un déclencheur dans Oracle.