MySQL的sequence解决方案

最新推荐文章于 2024-04-28 20:47:51 发布
转载 最新推荐文章于 2024-04-28 20:47:51 发布 · 2.5k 阅读
· 0
· 0
·
收录于

当前文章被以下社区和专栏收录:

本文介绍了一种在MySQL中实现类似Oracle Sequence的方法。通过创建Sequence表和定义CURRVAL、NEXTVAL及SETVAL函数,可以有效地在MySQL中模拟Sequence的功能。

由于MySQL不支持sequence,所以从Oracle迁移时需要采用自定义sequence的方式来解决。

1. 首先建立一张sequence基础表,用来存储用户所有的sequence内容。

CREATE TABLE seqmysql

(

   seqname          varchar(50),

   `currentValue`   int(11),

   increment        int(11) DEFAULT 1

)

2. 创建sequence操作函数。

获取当前序列值函数 currval:

CREATE DEFINER=`mysql`@`%` FUNCTION `currval`(seq_name VARCHAR(50)) RETURNS int(11)

BEGIN

  DECLARE current INTEGER;

  SET current = 0;

  SELECT currentValue INTO current

  FROM seqMysql

  WHERE seqname = seq_name;

  RETURN current;

END

获取序列下一值函数 nextval:

CREATE DEFINER=`mysql`@`%` FUNCTION `nextval`(seq_name VARCHAR(50)) RETURNS int(11)

BEGIN

   UPDATE seqMysql

   SET currentValue = currentValue + increment

   WHERE seqname = seq_name;

   RETURN currval(seq_name);

END

设置序列当前值 setval

CREATE DEFINER=`mysql`@`%` FUNCTION `setval`(seq_name VARCHAR(50), value INTEGER) RETURNS int(11)

BEGIN

   UPDATE seqMysql

   SET currentValue = value

   WHERE seqname = seq_name;

   RETURN currval(seq_name);

END

使用如下方式使用MySQL的序列:

--创建一个序列,起始为1,步长为1

INSERT INTO seqmysql VALUES ('my_seq', 1, 1);

--从序列中取出下一个值

SELECT nextval('my_seq') FROM DUAL;

--从序列中取出当前值

SELECT currval('my_seq') FROM DUAL;

--设置序列当前值

SELECT setval('my_seq', 5) FROM DUAL;

 

确定要放弃本次机会?
福利倒计时
: :

立减 ¥

普通VIP年卡可用
立即使用
sxtobj
关注 关注
  • 0
    点赞
  • 踩
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
  • 分享
    复制链接
    分享到 QQ
    分享到新浪微博
    扫一扫
  • 举报
    举报
Vivado IP核与License许可全解析:从免费到收费,从评估到部署
weixin_29169505的博客
03-31 326
本文全面解析Vivado IP核与License许可机制,从免费到收费IP核的选型指南到License的申请与部署策略。详细介绍了Xilinx官方IP核的优势与局限,第三方IP核的风险与应对,以及实战中的资源优化技巧和版本兼容性问题,帮助开发者高效利用Vivado工具链。
参与评论 您还未登录,请先 登录 后发表或查看评论
NVIDIA Jetson AGX Xavier设置风扇转速、工作模式及性能监控
weixin_43877080的博客
06-29 1万+
Xavier的风扇在开机之后是默认关闭的,每次重启都需要手动打开风扇,后续可能考虑修改bashrc文件进行自动开启 这个是显示当前风扇的转速,默认应该是0,表示关闭,最大是250 cat /sys/devices/pwm-fan/target_pwm 可以通过修改该文件的值来修改风扇转速 vim /sys/devices/pwm-fan/target_pwm 我一般使用的是100这个值 作者:ryan_ren 链接:https://www.jianshu.com/p/d3c2041f7f7d 来源:简书 著
MySQL中使用序列-Sequence
奔跑的蜗牛
05-31 1万+
在Oracle数据库中若想要一个连续的自增的数据类型的值,可以通过创建一个sequence来实现。而在MySQL数据库中并没有sequence。通常如果一个表只需要一个自增的列,那么我们可以使用MySQL的auto_increment(一个表只能有一个自增主键)。若想要在MySQL像Oracle中那样使用序列,我们该如何操作呢? 例如存在如下表定义: create table `t_user`( `id` bigint auto_increment primary key, ...
汉字字模点阵数据批量生成工具_suki_v5.0破解版
汉字字模点阵数据批量生成工具支持 1024x1024以内的任意点阵汉字支持 所有Windows汉字字体设置支持 汉字大小调整 支持 汉字位置调整 支持 单个汉字字模生成 支持 海量汉字批量字模生成 支持 按汉语拼音排序 支持 横扫纵扫两种扫描方式生成数据支持 8位一组”Z”扫描方式支持 4-32bit多种数据长度分组选择支持 字模数据取反支持 字节按位倒置支持 汉语拼音自动命名C语言数组格式支持 汉语拼音自动命名汇编语言标号DB表格式支持 自动编号数组命名及自动编号汇编DB表命名方式支持 图片Logo点阵数据生成支持 二进制数据字库DAT和BIN 文件的生成支持 二进制字库文件索引(两个字节索引)支持 GB2312 字符集选择导入及字库生成支持 GBK字符集选择导入及字库生成(仅供参考)支持繁简字体自由转换支持 单字节字符支持 RS232串口通讯、可把字模数据发送到移动存储设备集成汉字自动识别功能,清除非汉字字符,提取汉字功能 适合用于产生点阵LED大屏幕、LCD液晶汉字字模,可用作开发辅助工具,得到精减汉字库,节约有限的ROM空间资源。也可用作带点阵LCD显示系统的汉化工具或其它需要汉字点阵数据的地方。绿色破解版
MySQL使用Sequence创建唯一主键
baomingshu的博客
04-28 4323
友情提醒:先看目录,了解文章结构,点击目录可跳转到文章指定位置。
MySQL系列——MySQL实现序列(Sequence)效果
热门推荐
哈哈书架
01-13 9万+
MySQL实现序列效果 一般使用序列(Sequence)来处理主键字段,在MySQL中是没有序列的,但是MySQL有提供了自增长(increment)来实现类似的目的,但也只是自增,而不能设置步长、开始索引、是否循环等,最重要的是一张表只能由一个字段使用自增,但有的时候我们需要两个或两个以上的字段实现自增(单表多字段自增),MySQL本身是实现不了的,但我们可以用创建一个序列表,使用函数来获取序...
✍序列使用
weixin_63173847的博客
06-21 1993
如果需要调整序列的起始值或递增值,可以使用 ALTER SEQUENCE 命令。例如,要将 users_id_seq 的起始值修改为 100,递增值修改为 10,可以执行以下命令。在 MySQL 中,序列是通过名为 SERIAL 的数据类型创建的。当你创建一个新的表并使用 SERIAL 作为主键列的数据类型时,MySQL 会自动为你创建一个序列。MySQL 序列(Sequence)是一种用于生成自动递增 ID 的数据库对象。如果需要将序列的值重置为特定值,可以使用 ALTER SEQUENCE 命令。
mysql 实现oracl序列_MySQL实现ORACLE序列(Sequence)的解决方案
weixin_34477616的博客
01-28 238
背景:先总结一下MYSQL 自增长与ORACLE 序列的区别:自增长只能用于表中的其中一个字段自增长只能被分配给固定表的固定的某一字段,不能被多个表共用.自增长会把一个未指定或NULL值的字段自动填上.实验:我们可以用创建一个序列表,使用函数来获取序列的值1. 新建序列表drop table if exists tb_sequence;create table tb_sequence (seq_...
mysql currval_MySQL实现ORACLE序列(Sequence)的解决方案_MySQL
weixin_29725791的博客
01-27 422
背景:先总结一下MYSQL 自增长与ORACLE 序列的区别:自增长只能用于表中的其中一个字段自增长只能被分配给固定表的固定的某一字段,不能被多个表共用.自增长会把一个未指定或NULL值的字段自动填上.实验:我们可以用创建一个序列表,使用函数来获取序列的值1. 新建序列表drop table if exists tb_sequence;create table tb_sequence (seq_n...
mysql sequence 5.7_mysql5.7的3065错误解决方案
weixin_33978451的博客
01-27 231
有以下sqlSELECT DISTINCT questionid,questiontypeFROM x2_questions AS questions,x2_quest2knows AS quest2knowsWHERE find_in_set(quest2knows.qkknowsid,:knowsid)AND quest2knows.qktype = 0AND quest2knows.qkq...
MySQL实现ORACLE序列(Sequence)的解决方案
张荣珍的专栏
08-03 4748
背景:先总结一下MYSQL 自增长与ORACLE 序列的区别: 自增长只能用于表中的其中一个字段  自增长只能被分配给固定表的固定的某一字段,不能被多个表共用.  自增长会把一个未指定或NULL值的字段自动填上. 实验:我们可以用创建一个序列表,使用函数来获取序列的值 1. 新建序列表 drop table if exists tb_sequence; create
mysql实现sequence功能
eagle89的专栏
08-12 667
mysql实现sequence功能 1.建立sequence记录表 CREATE TABLE `sys_sequence` ( `seq_name` varchar(50) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, `min_value` int(11) NOT NULL, `max_value` int(11) NOT NULL, `current_value` int(11) NOT NULL, `increment_value`...
mysql实现oracle序列(sequence)的解决方案--自定义存储过程
zhuruxin1234的博客
03-27 348
转自:http://g.kehou.com/t1018529793.html MySQL自增长与Oracle序列的区别: 自增长只能用于表中的其中一个字段 自增长只能被分配给固定表的固定的某一字段,不能被多个表共用. 自增长会把一个未指定或NULL值的字段自动填上. 在mysql中添加序列,请看下面的实例: 在MYSQL里有这样一张表: Java代码 CRE...
Mysql sequence使用_基于Mysql的Sequence实现
weixin_33428129的博客
01-19 2995
团队更换新框架。新的业务全部使用新的框架,甚至是新的数据库--Mysql。这边之前一直是使用oracle,各种订单号、流水号、批次号啥的,都是直接使用oracle的sequence提供的数字序列号。现在数据库更换成Mysql了,显然以前的老方法不能适用了。需要新写一个:分布式场景使用满足一定的并发要求找了一些相关的资料,发现mysql这方面的实现,原理都是一条数据库记录,不断update它的值。然...
TiDB分表唯一主键ID——sequence 与gorm无法获取主键的解决
Canger_的博客
04-21 2649
按理说用了TiDB后就不用去考虑分库分表的问题了,但是由于业务场景上同时也要支持MySQL,且确实数据上存在一定隔离性,因此通过数据类型进行水平分表了。 MySQL水平分表后的主键id通过snowflake来写入,而TiDB的主键id决定通过tidb的sequenceID来实现 Sequence Sequence 是数据库系统按照一定规则自增的数字序列,具有唯一和单调递增的特性。在官方 SQL 2003 标准中,其被定义为"生成连续数值的一种机制,Sequence 既可以是内部对象,也可以是外部对象"。因为
Hibernate之Table ‘xxx.hibernate_sequence‘ doesn‘t exist异常
HelloWord_Lk的博客
02-08 3454
异常截图 使用Hibernate jpa操作Mysql出现如下异常: 原因分析 表hiberate_sequence的作用为当主键id增长方式选择以sequence方式时,那么表hibernate_sequence用于记录其他表的主键。 代码中实体注解为@GeneratedValue(strategy = GenerationType.AUTO),那么主键id增长方式交由了数据库自动选择,当数据库为Mysql是选择sqquence增长方式,那么就需要表hibernate_sequence记录其他表的主键。
Exception 05 : Could not instantiate id generator
weixin_30367945的博客
10-11 173
异常名称:   Could not instantiate id generator 异常截图:    异常原因:Sequence不支持mysql数据库   Sequence支持的是有序列的数据库,此时可以将oracle的驱动配置进来进行操作    转载于:https://www.cnblogs.com/applerosa/p/5950944.html...
oracle hibernate 自动创建表,自动创建表时,多了一张表hibernate_sequence,为什么?
weixin_34739699的博客
04-11 426
van_jf2018-06-27 11:21从网上复制下来的------------------------这是一条分割线---------------------------环境:@GeneratedValue(strategy = GenerationType.AUTO),数据库用的mysql问题:1.发现数据库保存的时候会生成hibernate_sequence表,用来记录其他表的主键。若删...
MySql中实现类似Oracle的Sequence方案
linzhijia0612的专栏
03-03 1218
项目中使用mysql数据库,功能涉及某信息编号需要从15000开始自增长。 方案一       mysql中建立 sequence_value 表  DAO实现自增长 Create Table CREATE TABLE `sequence_value` (   `id` int(11) unsigned NOT NULL AUTO_INCREMEN
【解决方案】关于自动生成表hibernate_sequence的问题
明天,争取的博客
10-24 1364
在mysql数据库中,使用hibernate自动生成数据表的同时,数据库会自动生成hibernate_sequence表, 如果删除该表,就会报错:could not read a hi value - you need to populate the table: hibernate_sequence 如果将生成策略改为@GeneratedValue(strategy = Generatio...
第九章:SpringBoot2.3.0 JPA+Mysql案例,并提供hibernate_sequence不存在解决方案
p812438109的专栏
06-14 1798
一)JPA简介 Java Persistence API是一种标准技术,可让您将对象“映射”到关系数据库。 目前Hibernate是最流行的JPA实现之一。 优点:JPA在新增、修改、删除操作支持非常好。大大减少了数据库SQL的编写。 缺点:JPA在查询方面支持不太友好,主要是体现在多表连接查询上,所以复杂的查询可以用EntityManager方式。 实体类加载方式: 传统上,JPA“实体”类在persistence.xml文件中指定。在Spring Boot中,此文件不是必需的,而..
关于hibernate在数据库中生成hibernate_sequence表时报错的解决方案
BestandW1shEs_lsy的博客
08-23 3243
在mysql数据库中,使用hibernate自动生成数据表的同时,数据库会自动生成hibernate_sequence表, 如果删除该表,就会报错:could not read a hi value - you need to populate the table: hibernate_sequence 解决办法: 发现我的表里面使用的主键生成策略的方式为:@Generate
sxtobj

博客等级

码龄15年
2
原创
16
点赞
72
收藏
4
粉丝
关注
私信

热门文章

  • oracle向PostgreSQL迁移 8664
  • “bash: fork: Resource temporarily unavailable”的解决方案 8478
  • TUXEDO配置参数详解 远程客户端配置 7561
  • FML32 API 6440
  • linux中文文件夹如何改回英文 4792

分类专栏

  • UNIX/linux
    22篇
  • tuxedo
    8篇
  • linux shell
    5篇
  • vim
    2篇
  • 编译
    8篇
  • AIX
    2篇
  • oracle
    22篇
  • DOS
    2篇
  • 人文
    2篇
  • 架构
    2篇
  • 数据结构与算法
    1篇
  • Redis
    1篇

展开全部 收起

上一篇:
解决远程登陆Linux误按ctrl+s锁屏
下一篇:
大型网站系统架构演化之路

最新评论

  • oracle向PostgreSQL迁移

    qq_35773499: 正好参与 oracle向PostgreSQL迁移 项目,能留下联系方式吗?请多多指教 我的手机微信是 15801766602

大家在看

  • 虚拟机养龙虾指南 384
  • 八分之一(分数阶)二阶滤波器:数字电源电压环的分数阶控制实践 243
  • 电商幂等设计全解析:从下单到支付,如何为系统“防重放” 673
  • 工业镜头选型进阶|吃透传感器匹配、MTF分辨率、景深联动逻辑、助力精密测量、缺陷检测、高低差成像稳定落地 1
  • CTIFoundry:面向网络威胁情报的代理原生语料库脚手架

最新文章

  • Linux select 文件描述符1024限制
  • select真的有限制吗
  • socket中的函数遇见EINTR的处理
2016年12篇
2015年8篇
2014年13篇
2013年33篇
2012年18篇
C知道

· AI 阅读助手

目录

展开全部

收起

C知道

· AI 阅读助手

目录

展开全部

收起

上一篇:
解决远程登陆Linux误按ctrl+s锁屏
下一篇:
大型网站系统架构演化之路

分类专栏

  • UNIX/linux
    22篇
  • tuxedo
    8篇
  • linux shell
    5篇
  • vim
    2篇
  • 编译
    8篇
  • AIX
    2篇
  • oracle
    22篇
  • DOS
    2篇
  • 人文
    2篇
  • 架构
    2篇
  • 数据结构与算法
    1篇
  • Redis
    1篇

展开全部 收起

目录

评论
被折叠的  条评论 为什么被折叠? 到【灌水乐园】发言
查看更多评论
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值