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

Wie erstelle ich automatisch inkrementierende Spalten in Oracle-Datenbanken?

DDD
Freigeben: 2025-01-23 23:21:53
Original
581 Leute haben es durchsucht

How Do I Create Auto-Incrementing Columns in Oracle Databases?

Spalte mit automatischer Inkrementierung in der Oracle-Datenbank

Im Gegensatz zu anderen Datenbanksystemen gab es in Oracle Database bis Version 11g kein Konzept zur automatischen Inkrementierung von Spalten. Dies kann beim Erstellen von Tabellen, die automatisch inkrementierende Bezeichner erfordern, zu Herausforderungen führen. Glücklicherweise können Sie Sequenzen und Trigger verwenden, um dieses Verhalten zu simulieren.

Simulation mit Sequenzen und Triggern

In Oracle 11g und früher können Sie Sequenzen und Trigger erstellen, um automatisch inkrementierende Spalten zu simulieren. Definieren Sie zunächst eine Tabelle mit einer numerischen Spalte, die als Bezeichner verwendet wird:

<code class="language-sql">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;</code>
Nach dem Login kopieren

Als nächstes erstellen Sie einen Trigger, der die ID-Spalte mit dem nächsten Wert der Sequenz füllt, wenn ein neuer Datensatz eingefügt 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

Identitätsspalte (Oracle 12c und höher)

Ab Oracle 12c wurden Identitätsspalten als echte Funktion zur automatischen Inkrementierung eingeführt. Sie können eine Identitätsspalte in einer Tabelle wie folgt definieren:

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

Identitätsspalten können auch Start- und Inkrementalwerte angeben, um manuelle Aktualisierungen zu verhindern:

<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

Verwenden Sie Sequenzen als Alternative zu Standardwerten

Oracle 12 bietet auch eine Möglichkeit, Sequenzen als Standardwerte 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
);</code>
Nach dem Login kopieren

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage