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

Wie erstelle ich automatisch inkrementierende Spalten in Oracle 11g und höher?

Linda Hamilton
Freigeben: 2025-01-23 23:31:20
Original
288 Leute haben es durchsucht

How to Create Auto-Incrementing Columns in Oracle 11g and Later?

Erstellen von AUTO_INCREMENT-ähnlichen Spalten in Oracle 11g

In Oracle-Versionen bis 11g ist der Spaltentyp AUTO_INCREMENT nicht nativ verfügbar. Es gibt jedoch alternative Mechanismen, um eine ähnliche Funktionalität zu erreichen.

Verwendung von Sequenzen und Triggern

Der häufigste Ansatz in Oracle 11g ist die Verwendung einer Kombination aus einer Sequenz und einem Auslöser:

Tabelle Definition:

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

Trigger-Definition:

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

Dieser Trigger weist den neu eingefügten Zeilen einen eindeutigen, inkrementellen Wert zu und ahmt das Verhalten von nach Spalten automatisch inkrementieren.

IDENTITY-Spalten (Oracle 12c )

In Oracle 12c und höher wurde der Spaltentyp IDENTITY eingeführt, der eine echte Funktion zur automatischen Inkrementierung bereitstellt:

Tabellendefinition:

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

Diese Definition erstellt eine Spalte „c1“, die automatisch für jede neue Zeile erhöht wird, die in die eingefügt wird Tabelle.

Alternativ können Sie Start- und Inkrementwerte angeben:

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

Sequenzen als Standardwerte verwenden (Oracle 12)

Eine weitere Option in Oracle 12 und höher besteht darin, eine Sequenz als Standardwert für a zu verwenden Spalte:

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

Dieser Ansatz weist inkrementelle Werte mithilfe einer Sequenz zu, aber der eigentliche Inkrementierungsvorgang wird von der Datenbank verwaltet.

Das obige ist der detaillierte Inhalt vonWie erstelle ich automatisch inkrementierende Spalten in Oracle 11g 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