Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich automatisch inkrementierende Spalten in Oracle?

Wie erstelle ich automatisch inkrementierende Spalten in Oracle?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-23 23:41:081017Durchsuche

How to Create Auto-Increment Columns in Oracle?

Auto-Inkrement-Spalte in der Oracle-Datenbank erstellen

In Oracle-Versionen vor 12c gab es kein Konzept für die automatische Inkrementierung von Spalten. Es gibt jedoch einige Möglichkeiten, eine ähnliche Funktionalität zu erreichen.

Methode 1: Sequenzen und Trigger verwenden

Eine Möglichkeit besteht darin, eine Sequenz und einen Trigger zu erstellen, der den Wert erhöht, bevor der Datensatz eingefügt wird.

<code class="language-sql">CREATE SEQUENCE dept_seq START WITH 1;

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

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

CREATE OR REPLACE TRIGGER dept_bir
BEFORE INSERT ON departments
FOR EACH ROW
BEGIN
  SELECT dept_seq.NEXTVAL
  INTO   :new.id
  FROM   dual;
END;
/</code>

Methode 2: IDENTITY-Spalte verwenden (Oracle 12c und höher)

Oracle 12c führt den Spaltendatentyp IDENTITY ein, der automatisch eindeutige Werte generieren kann.

<code class="language-sql">CREATE TABLE t1 (
    c1 NUMBER GENERATED by default on null as IDENTITY,
    c2 VARCHAR2(10)
);</code>

Methode 3: Sequenz als Standardwert verwenden (Oracle 12c und höher)

Ein anderer Ansatz besteht darin, eine Sequenz als Standardwert für die Spalte zu verwenden.

<code class="language-sql">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)
);</code>

Das obige ist der detaillierte Inhalt vonWie erstelle ich automatisch inkrementierende Spalten in Oracle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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