首頁 >資料庫 >mysql教程 >如何為 Oracle 資料庫中的現有欄位新增自動遞增功能?

如何為 Oracle 資料庫中的現有欄位新增自動遞增功能?

DDD
DDD原創
2024-12-26 09:46:10553瀏覽

How Can I Add Auto-Incrementing Functionality to Existing Columns in Oracle Databases?

自動遞增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版本,您可以使用以下組合序列和觸發器:

  1. 建立序列:
CREATE SEQUENCE t_seq START WITH 150111111 INCREMENT BY 1;
  1. 更改表並加入主表鍵:
ALTER TABLE t ADD CONSTRAINT id_pk PRIMARY KEY (ID);
  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;

此觸發器會會自動使用值填充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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn