如何在Oracle上使用AUTO_INCREMENT创建ID?

看起来在Oracle中没有AUTO_INCREMENT的概念,直到版本11g(包括版本11g)。

如何创建一个行为像Oracle 11g中的自动增量的列?

在Oracle中没有“auto_increment”或“identity”列。但是,您可以使用序列和触发器轻松建模:

表定义:

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;

触发器定义:

CREATE OR REPLACE TRIGGER dept_bir 
BEFORE INSERT ON departments 
FOR EACH ROW

BEGIN
  SELECT dept_seq.NEXTVAL
  INTO   :new.id
  FROM   dual;
END;
/

更新:IDENTITY列现在可用于Oracle 12c版本see this

CREATE TABLE t1 (c1 NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,c2 VARCHAR2(10));

或指定开始和增加值,也阻止任何插入标识列(GENERATED ALWAYS)(再次,仅Oracle 12c)

CREATE TABLE t1 (
    c1 NUMBER GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1),c2 VARCHAR2(10)
);

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...