gpt4 book ai didi

sql - 如何在Oracle中使用AUTO INCREMENT创建ID?

转载 作者:行者123 更新时间:2023-12-03 11:43:41 29 4
gpt4 key购买 nike

直到11g版本(包括11g),Oracle中似乎都没有AUTO_INCREMENT的概念。

如何在Oracle 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上可用:
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)
);

另外,Oracle 12还允许使用序列作为默认值:
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));

关于sql - 如何在Oracle中使用AUTO INCREMENT创建ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2053313/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com