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