現有Oracle表列的自增
在Oracle中,可以實現對已有主鍵的列添加自增功能根據Oracle版本,有不同的方式。
Oracle 11g 和之前
建立一個將遞增列值的序列:
CREATE SEQUENCE t_seq START WITH 150111111 INCREMENT BY 1;
在插入期間使用觸發器將下一個序列數值分配給欄位:
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 及更高版本
Oracle 12c 引入了Identity 列,它允許自動遞加值,而不需要序列或觸發器:
CREATE TABLE t ( ID NUMBER GENERATED ALWAYS AS IDENTITY START WITH 150111111 INCREMENT BY 1, text VARCHAR2(50) );
列就位後,新行將從指定的起始值開始自動遞增。
使用Oracle 11g 的示例
給定表:
TABLE t ( SEQ_ID NUMBER(10) NOT NULL );
創建序列“t_seq”和触發器“t_trg”後,插入新行:
INSERT INTO t(text) VALUES('auto-increment test 1'); INSERT INTO t(text) VALUES('auto-increment test 2');
查詢表以驗證自增:
SELECT * FROM t;
使用Oracle 的範例12c
表定義為:
CREATE TABLE t ( ID NUMBER GENERATED ALWAYS AS IDENTITY START WITH 150111111 INCREMENT BY 1, text VARCHAR2(50) );
插入新行:
INSERT INTO t(text) VALUES('This table has an identity column');
SELECT * FROM t;
以上是如何為現有Oracle表列新增自動遞增功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!