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;
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;
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) );
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 );
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');
Fragen Sie die Tabelle ab, um die automatische Inkrementierung zu überprüfen:
SELECT * FROM t;
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) );
Neue Zeilen einfügen:
INSERT INTO t(text) VALUES('This table has an identity column');
Tabelle zur Bestätigung abfragen:
SELECT * FROM t;
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!