Heim >Datenbank >MySQL-Tutorial >Wie kann ich vorhandenen Spalten in Oracle-Datenbanken automatische Inkrementierungsfunktionen hinzufügen?

Wie kann ich vorhandenen Spalten in Oracle-Datenbanken automatische Inkrementierungsfunktionen hinzufügen?

DDD
DDDOriginal
2024-12-26 09:46:10553Durchsuche

How Can I Add Auto-Incrementing Functionality to Existing Columns in Oracle Databases?

Automatische Inkrementierung vorhandener Spalten in Oracle-Datenbanken

Das Hinzufügen einer Funktion zur automatischen Inkrementierung zu einer vorhandenen Spalte in Oracle kann je nach Bedarf durch unterschiedliche Ansätze erreicht werden auf der Oracle-Version.

Oracle 12c und höher: Verwenden von Identität Spalten

Oracle 12c führte die IDENTITY-Spaltenfunktion ein, die die automatische Inkrementierung vereinfacht:

CREATE TABLE t (
ID NUMBER GENERATED ALWAYS AS IDENTITY START WITH 150111111 INCREMENT BY 1,
text VARCHAR2(50)
);

Oracle 11g und Vorgänger: Sequenz und Trigger

Für Oracle-Versionen vor 12c können Sie eine Kombination aus Sequenz und verwenden Auslöser:

  1. Eine Sequenz erstellen:
CREATE SEQUENCE t_seq START WITH 150111111 INCREMENT BY 1;
  1. Tabelle ändern und Primärschlüssel hinzufügen:
ALTER TABLE t ADD CONSTRAINT id_pk PRIMARY KEY (ID);
  1. Erstellen Auslöser:
CREATE OR REPLACE TRIGGER t_trg
BEFORE INSERT ON t
FOR EACH ROW
WHEN (new.id IS NULL)
BEGIN
SELECT t_seq.NEXTVAL INTO :new.id FROM dual;
END;

Dieser Auslöser füllt die ID-Spalte automatisch mit Werten aus der Sequenz.

Beispielverwendung:

Bei beiden Methoden füllen Einfügungen die ID-Spalte mit automatisch inkrementierenden Werten beginnend bei 150111111.

INSERT INTO t(text) VALUES('auto-increment test');

Die Abfrage der Tabelle bestätigt die automatisch inkrementierten IDs:

SELECT * FROM t;

ID                        TEXT
------------------------- ----------------------------------------
150111111 This table has an auto-incrementing column

Hinweis: Oracle erstellt implizit eine Sequenz mit dem Namen ISEQ$$, wenn Identität verwendet wird Spalten.

Das obige ist der detaillierte Inhalt vonWie kann ich vorhandenen Spalten in Oracle-Datenbanken automatische Inkrementierungsfunktionen hinzufügen?. 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