Oracle Insert 语句插入自增ID

Oracle Insert 语句插入自增ID

Oracle Insert 语句插入自增ID

举报

福州司马懿

发表于 2025/09/21 23:11:58

2025/09/21

【摘要】 在 Oracle 中,没有像 MySQL 那样的 AUTO_INCREMENT 关键字来实现自增 ID,但可以通过 序列(Sequence) 和 触发器(Trigger) 或 直接在 INSERT 语句中使用序列 来实现自增 ID 的功能。以下是几种常见方法: 方法 1:使用序列(Sequence) + INSERT 语句 1. 创建序列(Sequence)CREATE SEQUENCE y...

在 Oracle 中,没有像 MySQL 那样的 AUTO_INCREMENT 关键字来实现自增 ID,但可以通过 序列(Sequence) 和 触发器(Trigger) 或 直接在 INSERT 语句中使用序列 来实现自增 ID 的功能。以下是几种常见方法:

方法 1:使用序列(Sequence) + INSERT 语句

1. 创建序列(Sequence)

CREATE SEQUENCE your_table_id_seq

START WITH 1 -- 起始值

INCREMENT BY 1 -- 每次增加 1

NOCACHE -- 不缓存序列值(避免并发问题)

NOCYCLE; -- 不循环

2. 在 INSERT 语句中使用序列

INSERT INTO your_table (id, column1, column2)

VALUES (your_table_id_seq.NEXTVAL, 'value1', 'value2');

your_table_id_seq.NEXTVAL 会自动获取序列的下一个值。

方法 2:使用序列 + 触发器(Trigger)自动填充 ID

如果希望在插入数据时 自动填充 ID,可以使用触发器:

1. 创建序列

CREATE SEQUENCE your_table_id_seq

START WITH 1

INCREMENT BY 1

NOCACHE

NOCYCLE;

2. 创建触发器

CREATE OR REPLACE TRIGGER your_table_id_trigger

BEFORE INSERT ON your_table

FOR EACH ROW

BEGIN

IF :NEW.id IS NULL THEN

:NEW.id := your_table_id_seq.NEXTVAL;

END IF;

END;

/

这样,在插入数据时,如果 id 字段为空,触发器会自动填充序列的下一个值。

3. 插入数据(无需指定 ID)

INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2');

方法 3:使用 IDENTITY 列(Oracle 12c 及以上版本)

从 Oracle 12c 开始,支持 IDENTITY 列(类似 MySQL 的 AUTO_INCREMENT):

CREATE TABLE your_table (

id NUMBER GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1),

column1 VARCHAR2(100),

column2 VARCHAR2(100)

);

插入数据时无需指定 id:

INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2');

总结

方法

适用版本

特点

序列 + INSERT

所有 Oracle 版本

手动在 INSERT 语句中使用 seq.NEXTVAL

序列 + 触发器

所有 Oracle 版本

自动填充 ID,无需修改 INSERT 语句

IDENTITY 列

Oracle 12c+

最简单,类似 MySQL 的 AUTO_INCREMENT

推荐:

如果使用 Oracle 12c 及以上,优先使用 IDENTITY 列。

如果是旧版本,使用 序列 + 触发器 最方便。

希望这能解决你的问题!🚀

推荐

华为开发者空间发布

让每位开发者拥有一台云主机

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:

cloudbbs@huaweicloud.com

MySQL

Oracle

点赞

收藏

关注作者

更多尼泊尔内容

批量照片编辑器 - 提升 30 倍效率
世界杯365网站打不开

批量照片编辑器 - 提升 30 倍效率

🗓️ 10-02 👁️ 574
监控电源品牌排行榜
office365邮箱手机版

监控电源品牌排行榜

🗓️ 08-04 👁️ 1000
如何在抖音上挂淘宝链接 六个步骤手把手教你操作
bet28365365官网

如何在抖音上挂淘宝链接 六个步骤手把手教你操作

🗓️ 09-19 👁️ 5198
安卓手机如何下载Instagram应用?
bet28365365官网

安卓手机如何下载Instagram应用?

🗓️ 07-25 👁️ 3189
什么品种的鸡好,这6个品种的肉质最好吃又产蛋多
office365邮箱手机版

什么品种的鸡好,这6个品种的肉质最好吃又产蛋多

🗓️ 01-08 👁️ 5604
首部历史AI动画纪录片《战神·英雄崛起》今日热血来袭
office365邮箱手机版

首部历史AI动画纪录片《战神·英雄崛起》今日热血来袭

🗓️ 02-22 👁️ 6396
三星s5和iphone6哪個好?三星galaxy s5和蘋果6對比評測
office365邮箱手机版

三星s5和iphone6哪個好?三星galaxy s5和蘋果6對比評測

🗓️ 08-07 👁️ 5244
范冰冰身高,范冰冰身高体重是多少?
office365邮箱手机版

范冰冰身高,范冰冰身高体重是多少?

🗓️ 10-26 👁️ 4804
5款电脑P图软件推荐,免费且简单易用
office365邮箱手机版

5款电脑P图软件推荐,免费且简单易用

🗓️ 07-13 👁️ 8824