Heim >Datenbank >MySQL-Tutorial >Wie kann ich die Funktion zur automatischen Inkrementierung zu vorhandenen Oracle-Spalten hinzufügen?

Wie kann ich die Funktion zur automatischen Inkrementierung zu vorhandenen Oracle-Spalten hinzufügen?

Susan Sarandon
Susan SarandonOriginal
2024-12-19 13:39:10390Durchsuche

How Can I Add Auto-Increment Functionality to Existing Oracle Columns?

Automatische Inkrementierung für bereits vorhandene Oracle-Spalten

Während das Hinzufügen der Funktion zur automatischen Inkrementierung zu einer vorhandenen Spalte in Oracle nicht nativ unterstützt wird, Um dies zu erreichen, können verschiedene Ansätze eingesetzt werden.

11g und Prior: Sequenz und Trigger

Für Oracle-Versionen 11g und früher können eine Sequenz und ein Trigger verwendet werden:

  • Erstellen Sie eine Sequenz: Diese Sequenz generiert die Werte automatisch inkrementieren.
  • Ändern Sie die Tabelle: Fügen Sie eine Primärschlüsseleinschränkung zur hinzu Spalte.
  • Erstellen Sie einen Trigger: Der Trigger fügt den nächsten Wert aus der Sequenz in die Spalte ein, wenn eine neue Zeile eingefügt wird (wenn die Spalte null ist).

Beispiel:

-- Create sequence
CREATE SEQUENCE t_seq START WITH 150111111 INCREMENT BY 1;

-- Alter table
ALTER TABLE t ADD CONSTRAINT id_pk PRIMARY KEY (ID);

-- Create trigger
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;

12c und höher: Identität Spalte

Oracle 12c hat die Identitätsspaltenfunktion eingeführt, die eine automatische Inkrementierung innerhalb der Tabelle selbst ermöglicht:

  • Erstellen Sie eine Tabelle mit einer Identitätsspalte: Geben Sie das Attribut „GENERATED ALWAYS AS IDENTITY“ für an Spalte.
  • Beispiel:

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

Bitte beachten Sie, dass diese Ansätze keine vorhandenen Werte in der Spalte aktualisieren. Um bestehende Werte zu ändern, wäre eine separate Update-Abfrage notwendig.

Das obige ist der detaillierte Inhalt vonWie kann ich die Funktion zur automatischen Inkrementierung zu vorhandenen Oracle-Spalten 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