MySQL实现类似Oracle序列的方案
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,MySQL实现类似Oracle的序列Oracle一般使用序列(Sequence)来处理主键字段,而MySQL则提供了自增长(increment)来实现类似的目的;但在实际使用过程中发现,MySQL的自
千家信息网最后更新 2026年10月31日MySQL实现类似Oracle序列的方案
MySQL实现类似Oracle的序列
Oracle一般使用序列(Sequence)来处理主键字段,而MySQL则提供了自增长(increment)来实现类似的目的;
但在实际使用过程中发现,MySQL的自增长有诸多的弊端:不能控制步长、开始索引、是否循环等;若需要迁移数据库,则对于主键这块,也是个头大的问题。
本文记录了一个模拟Oracle序列的方案,重点是想法,代码其次。
Oracle序列的使用,无非是使用.nextval和.currval伪列,基本想法是:
1、MySQL中新建表,用于存储序列名称和值;
2、创建函数,用于获取序列表中的值;
具体如下:
表结构为:
drop table if exists sequence; create table sequence ( seq_name VARCHAR(50) NOT NULL, -- 序列名称 current_val INT NOT NULL, --当前值 increment_val INT NOT NULL DEFAULT 1, --步长(跨度) PRIMARY KEY (seq_name) );
实现currval的模拟方案
create function currval(v_seq_name VARCHAR(50)) returns integer begin declare value integer; set value = 0; select current_value into value from sequence where seq_name = v_seq_name; return value; end;
函数使用为:select currval('MovieSeq');
实现nextval的模拟方案
create function nextval (v_seq_name VARCHAR(50)) return integer begin update sequence set current_val = current_val + increment_val where seq_name = v_seq_name; return currval(v_seq_name); end;
函数使用为:select nextval('MovieSeq');
增加设置值的函数
create function setval(v_seq_name VARCHAR(50), v_new_val INTEGER) returns integer begin update sequence set current_val = v_new_val where seq_name = v_seq_name; return currval(seq_name);
同理,可以增加对步长操作的函数,在此不再叙述。
注意语法,数据库字段要对应上
use bvboms; DELIMITER $$ create function setval(v_seq_name VARCHAR(50), v_new_val INTEGER) returns integer begin update sequence set current_val = v_new_val where seq_name = v_seq_name; return currval(seq_name);end $$DELIMITER $$
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
序列
函数
方案
内容
步长
名称
字段
想法
数据
数据库
增长
学习
个头
代码
价值
实际
就是
序列表
弊端
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司起名
互联网科技的
万易互联网科技
成都互联网科技公司
西安互联网科技公司
广州凡科互联网科技
佩信高科技互联网
阿里互联网科技公司
南山科技园互联网公司有哪些
互联网和黑科技的看法
畅思互联网科技
长沙茂晟互联网科技有限公司
互联网科技大赛获奖感言
无锡工业互联网科技有限公司
互联网金融科技公司的优势
上海钢联属于互联网科技股吗
智帮互联网科技公司最近动向
黑云互联网科技有限公司
容联科技互联网电商
湖北辰鑫科技互联网
齐家互联网科技
顺玮阁互联网科技
互联网 新科技
安控科技rtu产品工业互联网
互联网之后的科技是什么
岳阳华臻互联网科技有限公司
赶超互联网科技 微信多开
移动互联网科技公司
科技互联网海报
锡山区互联网智能科技产品供应