在Oracle資料庫中建立自動遞增列
在12c之前的Oracle版本中,並沒有自動遞增列的概念。但是,我們可以透過一些方法來實現類似的功能。
方法一:使用序列與觸發器
一種方法是建立一個序列和一個觸發器,在插入記錄之前遞增值。
<code class="language-sql">CREATE SEQUENCE dept_seq START WITH 1; CREATE TABLE departments ( ID NUMBER(10) NOT NULL, DESCRIPTION VARCHAR2(50) NOT NULL ); ALTER TABLE departments ADD ( CONSTRAINT dept_pk PRIMARY KEY (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; /</code>
方法二:使用IDENTITY欄位 (Oracle 12c以上)
Oracle 12c引入了IDENTITY列資料型,它可以自動產生唯一值。
<code class="language-sql">CREATE TABLE t1 ( c1 NUMBER GENERATED by default on null as IDENTITY, c2 VARCHAR2(10) );</code>
方法三:使用序列作為預設值 (Oracle 12c以上)
另一種方法是使用序列作為列的預設值。
<code class="language-sql">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) );</code>
以上是Oracle中如何建立自增列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!