MySQL实现类似Oracle序列的方案
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,MySQL实现类似Oracle的序列Oracle一般使用序列(Sequence)来处理主键字段,而MySQL则提供了自增长(increment)来实现类似的目的;但在实际使用过程中发现,MySQL的自
千家信息网最后更新 2025年02月01日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安全错误
数据库的锁怎样保障安全
sybase数据库访问工具
美国的数据库建设
管理中心服务器mc27
武进软件开发商
cpanel 修改数据库
发宝互联网科技有限公司
云服务器传出速度慢
crm软件开发管理
上海浦东数据库培训 昂立
公众号小程序软件开发
南京计算机网络技术包括什么
数据库用户自定义函数求和
网络安全法规定窃取
中医教学数据库
去华为做软件开发什么体验
中科大邮箱服务器设置
sql注入 删除数据库
2019网络安全技术能手
北京程云网络技术有限公司
一带一路网络安全人才培养
上海时间同步服务器
网络技术员技能
计算机专业的考网络技术
怎么将数据库导入软件打开
两阶段需要数据库支持吗
数据库的悲观锁 原理
华三服务器管理口用户名
数据库加密技术的介绍
做简单小软件开发
银川小程序软件开发公司