MySQL实现类似Oracle序列的方案
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,MySQL实现类似Oracle的序列Oracle一般使用序列(Sequence)来处理主键字段,而MySQL则提供了自增长(increment)来实现类似的目的;但在实际使用过程中发现,MySQL的自
千家信息网最后更新 2025年11月06日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安全错误
数据库的锁怎样保障安全
数据库模型图片大全
南京丰泰互联网科技有限公司
access数据库教程全集
数据库在哪查询
软件开发精益改善点
医院网络安全教学
3389服务器批量
信息网络安全法律法规宣传总结
大学计算机电子表格和数据库
数据库中设置两个值保持一致
服务器国外服务商
网络安全维保服务报价
服务器网络存在风险
甘肃大数据软件开发公司
亚洲电视app无法连接服务器
maysql复制数据库
软件开发类的证书
计算机考试三级网络技术
我的世界小号登录服务器
杭州软件开发方案
无线网络安全密匙是啥
定制型软件开发项目前期工作
部队干部手机网络安全检讨书
卢龙网络安全招标
镇平租房软件开发
疫情监测网络安全
如何数据库表格不被修改
数据库名表名字段名是什么
主服务器认证失败怎么办
郑州市志远网络技术有限公司