sql >> Databasteknik >  >> RDS >> Oracle

Autoincrement Primär nyckel i Oracle-databasen

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.



  1. Välj dynamiska radvärden som kolumnnamn, i specifik ordning

  2. Resultat av MYSQL-fråga skrivs ut två gånger med PDO

  3. Det går inte att konvertera MySQL datum/tid värde till System.DateTime. Kunde inte lagra 0/0/0000 0:00:00 värde?

  4. GÅ MED I Performance Issue MySQL