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中文网其他相关文章!