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

Wie erstelle ich automatisch inkrementierende Spalten in Oracle-Datenbanken?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-23 23:37:09903Durchsuche

How to Create Auto-Increment Columns in Oracle Databases?

Spalten automatisch inkrementieren in Oracle: Eine umfassende Anleitung

Oracle-Datenbanken vor Version 12c boten keine nativen automatischen Inkrementierungsspalten. Sie können diese Funktionalität jedoch mithilfe von Sequenzen und Triggern effektiv replizieren. Oracle 12c und spätere Versionen führen echte Identitätsspalten ein und bieten einen optimierteren Ansatz.

Pre-12c: Simulieren der automatischen Inkrementierung mit Sequenzen und Triggern

Beginnen wir mit der Erstellung einer Tabelle, die eine automatisch inkrementierende ID benötigt:

<code class="language-sql">CREATE TABLE departments (
  ID NUMBER(10) NOT NULL,
  DESCRIPTION VARCHAR2(50) NOT NULL
);</code>

Als nächstes erstellen Sie eine Sequenz, um eindeutige ID-Werte zu generieren:

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

Schließlich sorgt ein Trigger dafür, dass der Sequenzwert beim Einfügen automatisch der Spalte ID zugewiesen wird:

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

Oracle 12c und höher: Identitätsspalten

Oracle 12c hat native Identitätsspalten eingeführt, was den Prozess erheblich vereinfacht:

<code class="language-sql">CREATE TABLE t1 (
  c1 NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,
  c2 VARCHAR2(10)
);</code>

Erweiterte Optionen in Oracle 12c

Oracle 12c bietet weitere Anpassungsmöglichkeiten:

  • Start- und Inkrementwerte steuern: Verhindern Sie das manuelle Einfügen in die Identitätsspalte, indem Sie Start- und Inkrementwerte angeben:
<code class="language-sql">CREATE TABLE t1 (
  c1 NUMBER GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1),
  c2 VARCHAR2(10)
);</code>
  • Sequenzen mit Identitätsspalten verwenden: Sie können weiterhin Sequenzen als Standardwertquelle nutzen:
<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
);</code>

Diese Methoden bieten effiziente und flexible Lösungen für die Verwaltung automatisch inkrementierender Spalten in Oracle-Datenbanken, unabhängig von der Version.

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