Oracle 中的自動遞增列:綜合指南
Oracle 資料庫在版本 12c 之前,不提供本機自動增量列。 但是,您可以使用序列和觸發器有效地複製此功能。 Oracle 12c 及更高版本引入了真正的識別列,提供了更簡化的方法。
Pre-12c:使用序列和觸發器模擬自動增量
我們先建立一個需要自動遞增 ID 的表:
<code class="language-sql">CREATE TABLE departments ( ID NUMBER(10) NOT NULL, DESCRIPTION VARCHAR2(50) NOT NULL );</code>
接下來,建立一個序列來產生唯一的 ID 值:
<code class="language-sql">CREATE SEQUENCE dept_seq START WITH 1;</code>
最後,觸發器確保序列值在插入時自動分配給 ID
列:
<code class="language-sql">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>
Oracle 12c 及更高版本:識別列
Oracle 12c 引進了本機識別列,顯著簡化了流程:
<code class="language-sql">CREATE TABLE t1 ( c1 NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY, c2 VARCHAR2(10) );</code>
Oracle 12c 中的進階選項
Oracle 12c 提供進一步的客製化:
<code class="language-sql">CREATE TABLE t1 ( c1 NUMBER GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1), c2 VARCHAR2(10) );</code>
<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 );</code>
這些方法為管理 Oracle 資料庫中的自動遞增列提供了高效、靈活的解決方案,無論版本為何。
以上是如何在Oracle資料庫中建立自增列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!