首頁 >資料庫 >mysql教程 >如何為現有 Oracle 列新增自動增量功能?

如何為現有 Oracle 列新增自動增量功能?

Susan Sarandon
Susan Sarandon原創
2024-12-19 13:39:10421瀏覽

How Can I Add Auto-Increment Functionality to Existing Oracle Columns?

預先存在的Oracle 欄位的自動增量

雖然Oracle 本身不支援新增自動增量功能,可以採用各種方法來實現這一目標。

11g 和之前的版本:序列和觸發器

對於Oracle 版本11g 及更早版本,可以使用序列和觸發器:

  • 建立序列: 此序列將產生自動遞加值。
  • 更改表:為列新增主鍵約束。
  • 建立觸發器:每當插入新行時,觸發器都會將序列中的下一個值插入到列中(如果該列是null)。

範例:

-- Create sequence
CREATE SEQUENCE t_seq START WITH 150111111 INCREMENT BY 1;

-- Alter table
ALTER TABLE t ADD CONSTRAINT id_pk PRIMARY KEY (ID);

-- Create trigger
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;

12c 及更高版本:識別列

Oracle 12c引入身分列功能,允許在表內自動遞增本身:

  • 建立一個帶有識別列的表: 指定 GENERATED ALWAYS AS IDENTITY屬性
  • 範例:

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

請注意,這些方法不會更新欄位中的現有值。要修改現有值,需要單獨的更新查詢。

以上是如何為現有 Oracle 列新增自動增量功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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