Oracle中序列的作用

本文详细介绍Oracle数据库中如何使用序列实现自增ID功能,包括序列的创建、使用及常见操作,适用于项目开发中需要自增主键的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

项目开发过程中,数据库表中的主键值有时需要被设置为number类型且自增。MySql、Sql Server中使用工具创建表时能够很方便的设置自增,但是Oracle中没有设置自增的方法,一般情况使用序列和触发器来实现主键自增功能。

二、Oracle序列

参考:Oracle中常见序列操作

--要有创建序列权限
create sequence / create any sequence
 --删除序列
drop sequence sequence_name;    

查找序列

--查找用户已创建的序列
select * from user_sequences;

--模糊搜索,序列
select * from user_sequences  where  sequence_name like '%MY%';

创建序列

drop sequence sequence_name;     --删除序列
create sequence sequence_name
	increment by 1   --定义序列步长,若为负数,则按此步长递减   改行可省略,省略默认值为1
	start with 1     --从1开始
	maxvalue   99999999   /  nomaxvalue   --没有最大值
	minvalue 1            --最小值从1开始
	cycle      --累加到最大值后又循环开始  
	/nocycle   --一直累加不循环
	cache  500  /   nocache    --不使用缓存
order;

//cache 10 表示一次产生10个号
//使用缓存产生号,优点是提高效率,缺点是可能产生跳号

序列出现不连续原因:

  • 1、回滚
  • 2、系统异常
  • 3、多个表同时使用同一序列

三、使用序列设置自增

Oracle中建立一个序列:

如:create sequences sequences_name start with 1 increment by 1;
--建立了一个从 1 开始每次加 1 的序列

访问序列时,用 sequences_name.nextval的语法。
对于表数据插入时实现id字段自增,可以使用如下类似语法

insert into test values (sequences_name.nextval,'ABC');

当然也可以自动一些,对表的插入操作,建立一个触发器,每当有数据插入时,触发器自动修改id值为序列的新值,这样就完全实现自增id功能了。但触发器如果建的过多,会比较混乱,不易管理。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值