在Oracle 11g 及更高版本中建立自動增量列
Oracle 資料庫在版本12c 之前缺乏自動增量列的概念。儘管如此,還是可以使用序列和觸發器在 Oracle 11g 中模擬此行為。
Oracle 11g 的方法
首先使用主鍵定義表column:
CREATE TABLE departments ( ID NUMBER(10) NOT NULL, DESCRIPTION VARCHAR2(50) NOT NULL ); ALTER TABLE departments ADD ( CONSTRAINT dept_pk PRIMARY KEY (ID) ); CREATE SEQUENCE dept_seq START WITH 1;
接下來,建立一個觸發器,為new 產生唯一的ID值插入:
CREATE OR REPLACE TRIGGER dept_bir BEFORE INSERT ON departments FOR EACH ROW BEGIN SELECT dept_seq.NEXTVAL INTO :new.id FROM dual; END;
Oracle 12c 及更高版本的更新
Oracle 12c 引入了原生IDENTITY 列類型,提供真正的自動增量功能:
create table t1 ( c1 NUMBER GENERATED by default on null as IDENTITY, c2 VARCHAR2(10) );
或者,您可以指定自訂起始和增量值:
create table t1 ( c1 NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1), c2 VARCHAR2(10) );
或者,在Oracle 12c 及更高版本中,使用序列作為預設值:
CREATE SEQUENCE dept_seq START WITH 1; CREATE TABLE departments ( ID NUMBER(10) DEFAULT dept_seq.nextval NOT NULL, DESCRIPTION VARCHAR2(50) NOT NULL ); ALTER TABLE departments ADD ( CONSTRAINT dept_pk PRIMARY KEY (ID) );
以上是如何在 Oracle 中建立自動遞增列:11g 與 12c 及更高版本?的詳細內容。更多資訊請關注PHP中文網其他相關文章!