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
Freigeben: 2025-01-23 23:37:09
Original
949 Leute haben es durchsucht

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

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

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

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

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

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!

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