Heim > Datenbank > MySQL-Tutorial > Wie erstelle ich automatisch inkrementierende Spalten in Oracle: 11g vs. 12c und höher?

Wie erstelle ich automatisch inkrementierende Spalten in Oracle: 11g vs. 12c und höher?

Patricia Arquette
Freigeben: 2025-01-23 23:27:20
Original
218 Leute haben es durchsucht

How to Create Auto-Incrementing Columns in Oracle: 11g vs. 12c and Beyond?

Auto-Inkrement-Spalten in Oracle 11g und höher erstellen

In Oracle-Datenbanken fehlt das Konzept der Auto-Inkrement-Spalten bis Version 12c. Trotzdem ist es möglich, dieses Verhalten in Oracle 11g mithilfe einer Sequenz und eines Triggers zu emulieren.

Methode für Oracle 11g

Beginnen Sie mit der Definition der Tabelle mit einem Primärschlüssel Spalte:

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;
Nach dem Login kopieren

Als nächstes erstellen Sie einen Trigger, der eindeutige ID-Werte für neue generiert Einfügungen:

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

BEGIN
  SELECT dept_seq.NEXTVAL
  INTO   :new.id
  FROM   dual;
END;
Nach dem Login kopieren

Update für Oracle 12c und höher

Oracle 12c führt einen nativen IDENTITY-Spaltentyp ein, der eine echte Funktion zur automatischen Inkrementierung bietet:

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

Alternativ können Sie benutzerdefinierte Start- und Inkrementwerte angeben Werte:

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

Oder verwenden Sie in Oracle 12c und höher eine Sequenz als Standardwert:

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)
);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie erstelle ich automatisch inkrementierende Spalten in Oracle: 11g vs. 12c und höher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage