預先存在的Oracle 欄位的自動增量
雖然Oracle 本身不支援新增自動增量功能,可以採用各種方法來實現這一目標。
11g 和之前的版本:序列和觸發器
對於Oracle 版本11g 及更早版本,可以使用序列和觸發器:
範例:
-- 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引入身分列功能,允許在表內自動遞增本身:
範例:
CREATE TABLE t ( ID NUMBER GENERATED ALWAYS AS IDENTITY START WITH 150111111 INCREMENT BY 1, text VARCHAR2(50) );
請注意,這些方法不會更新欄位中的現有值。要修改現有值,需要單獨的更新查詢。
以上是如何為現有 Oracle 列新增自動增量功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!