加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 15:16:40 所属栏目:百科 来源:网络整理
导读:看起来在Oracle中没有AUTO_INCREMENT的概念,直到版本11g(包括版本11g)。 如何创建一个行为像Oracle 11g中的自动增量的列? 在Oracle中没有“auto_increment”或“identity”列。但是,您可以使用序列和触发器轻松建模: 表定义: CREATE TABLE departments
看起来在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)
);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读