自動遞增Oracle 資料庫中的現有欄位
為Oracle 中的現有欄位新增自動遞增功能可以透過不同的方法來增加實現,具體取決於在Oracle 版本上。
Oracle 12c 及更高版本:使用識別列
Oracle 12c 引入了IDENTITY 列功能,可簡化自動遞增:
CREATE TABLE t ( ID NUMBER GENERATED ALWAYS AS IDENTITY START WITH 150111111 INCREMENT BY 1, text VARCHAR2(50) );
Oracle 11g及之前版本:序列與觸發器
對於 12c 之前的 Oracle版本,您可以使用以下組合序列和觸發器:
CREATE SEQUENCE t_seq START WITH 150111111 INCREMENT BY 1;
ALTER TABLE t ADD CONSTRAINT id_pk PRIMARY KEY (ID);
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;
此觸發器會會自動使用值填充ID 列從序列中。
範例用法:
對於這兩種方法,插入都會用從 150111111 開始的自動遞增值填入 ID 欄位。
INSERT INTO t(text) VALUES('auto-increment test');
查詢表確認自動遞增ID:
SELECT * FROM t; ID TEXT ------------------------- ---------------------------------------- 150111111 This table has an auto-incrementing column
注意: Oracle 在使用識別列時隱含建立一個名為ISEQ$$ 的序列。
以上是如何為 Oracle 資料庫中的現有欄位新增自動遞增功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!