在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 举报,一经查实,本站将立刻删除。