微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在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)
);

原文地址:https://www.jb51.cc/oracle/210183.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐