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