sql >> Database teknologi >  >> RDS >> Oracle

Hvordan opretter man id med AUTO_INCREMENT på Oracle?

Der er ikke sådan noget som "auto_increment" eller "identity"-kolonner i Oracle fra Oracle 11g . Du kan dog nemt modellere den med en sekvens og en trigger:

Tabeldefinition:

CREATE TABLE departments (
  ID           NUMBER(10)    NOT NULL,
  DESCRIPTION  VARCHAR2(50)  NOT NULL);

ALTER TABLE departments ADD (
  CONSTRAINT dept_pk PRIMARY KEY (ID));

CREATE SEQUENCE dept_seq START WITH 1;

Triggerdefinition:

CREATE OR REPLACE TRIGGER dept_bir 
BEFORE INSERT ON departments 
FOR EACH ROW

BEGIN
  SELECT dept_seq.NEXTVAL
  INTO   :new.id
  FROM   dual;
END;
/

OPDATERING:

IDENTITY kolonne er nu tilgængelig på Oracle 12c:

create table t1 (
    c1 NUMBER GENERATED by default on null as IDENTITY,
    c2 VARCHAR2(10)
    );

eller angiv start- og stigningsværdier, hvilket også forhindrer enhver indsættelse i identitetskolonnen (GENERATED ALWAYS ) (igen kun Oracle 12c+)

create table t1 (
    c1 NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
    c2 VARCHAR2(10)
    );

Alternativt tillader Oracle 12 også at bruge en sekvens som standardværdi:

CREATE SEQUENCE dept_seq START WITH 1;

CREATE TABLE departments (
  ID           NUMBER(10)    DEFAULT dept_seq.nextval NOT NULL,
  DESCRIPTION  VARCHAR2(50)  NOT NULL);

ALTER TABLE departments ADD (
  CONSTRAINT dept_pk PRIMARY KEY (ID));


  1. Sådan laver du nemt CRUD ved hjælp af PHP og MySQL

  2. HAS_DBACCESS() – Find ud af, om en bruger kan få adgang til en database i SQL Server

  3. Bedste praksis i skalering af databaser:Del 1

  4. Sådan fungerer LIKE-operatøren i SQLite