Heim > Datenbank > MySQL-Tutorial > Wie füge ich die automatische Inkrementierungsfunktion zu vorhandenen Oracle-Tabellenspalten hinzu?

Wie füge ich die automatische Inkrementierungsfunktion zu vorhandenen Oracle-Tabellenspalten hinzu?

DDD
Freigeben: 2024-12-19 02:52:09
Original
961 Leute haben es durchsucht

How to Add Auto-Incrementing Functionality to Existing Oracle Table Columns?

Auto-Inkrementierung vorhandener Oracle-Tabellenspalten

In Oracle kann das Hinzufügen einer Auto-Inkrementierungsfunktion zu einer vorhandenen Spalte mit einem Primärschlüssel erreicht werden auf unterschiedliche Weise je nach Oracle-Version.

Oracle 11g und Vorher

Erstellen Sie eine Sequenz, die die Werte der Spalte erhöht:

CREATE SEQUENCE t_seq
START WITH 150111111
INCREMENT BY 1;
Nach dem Login kopieren

Verwenden Sie einen Trigger, um der Spalte beim Einfügen den nächsten Sequenzwert zuzuweisen:

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

Oracle 12c und höher

Oracle 12c führte die Identitätsspalte ein, die das automatische Erhöhen von Werten ohne die Notwendigkeit von Sequenzen oder Auslösern ermöglicht:

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

Sobald die Spalte vorhanden ist, werden neue Zeilen beginnend mit dem angegebenen Startwert automatisch inkrementiert.

Beispiel mit Oracle 11g

Angesichts der Tabelle:

TABLE t (
 SEQ_ID NUMBER(10) NOT NULL
);
Nach dem Login kopieren

Nachdem Sie die Sequenz „t_seq“ und den Trigger „t_trg“ erstellt haben, fügen Sie neue Zeilen ein:

INSERT INTO t(text) VALUES('auto-increment test 1');
INSERT INTO t(text) VALUES('auto-increment test 2');
Nach dem Login kopieren

Fragen Sie die Tabelle ab, um die automatische Inkrementierung zu überprüfen:

SELECT * FROM t;
Nach dem Login kopieren
Nach dem Login kopieren

Beispiel mit Oracle 12c

Mit Die Tabelle ist definiert als:

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

Neue Zeilen einfügen:

INSERT INTO t(text) VALUES('This table has an identity column');
Nach dem Login kopieren

Tabelle zur Bestätigung abfragen:

SELECT * FROM t;
Nach dem Login kopieren
Nach dem Login kopieren

In beiden Oracle-Versionen ist die Spalte „ „ID“ wird nun automatisch beginnend mit dem angegebenen Startwert (150111111) in Schritten von 1 erhöht.

Das obige ist der detaillierte Inhalt vonWie füge ich die automatische Inkrementierungsfunktion zu vorhandenen Oracle-Tabellenspalten hinzu?. 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