网站首页 > 文章中心 > 其它

mysql的序列怎么使用

作者:小编 更新时间:2023-08-21 08:10:49 浏览量:12人看过

MySQL实现类似Oracle序列的方案

MySQL实现类似Oracle的序列

Oracle一般使用序列(Sequence)来处理主键字段,而MySQL则提供了自增长(increment)来实现类似的目的;

但在实际使用过程中发现,MySQL的自增长有诸多的弊端:不能控制步长、开始索引、是否循环等;若需要迁移数据库,则对于主键这块,也是个头大的问题.

本文记录了一个模拟Oracle序列的方案,重点是想法,代码其次.

Oracle序列的使用,无非是使用.nextval和.currval伪列,基本想法是:

mysql的序列怎么使用-图1

①.、MySQL中新建表,用于存储序列名称和值;

具体如下:

表结构为:

drop

table

if

exists

sequence;

create

sequence

(

seq_name

NOT

NULL,

--

序列名称

current_val

INT

--当前值

increment_val

NULL

DEFAULT

--步长(跨度)

PRIMARY

KEY

(seq_name)

);

实现currval的模拟方案

function

currval(v_seq_name

returns

integer

begin

declare

value

integer;

set

=

0;

select

current_value

into

from

where

v_seq_name;

return

value;

end;

函数使用为:select

currval('MovieSeq');

实现nextval的模拟方案

nextval

(v_seq_name

update

+

currval(v_seq_name);

函数使用为:select

nextval('MovieSeq');

增加设置值的函数

setval(v_seq_name

v_new_val

INTEGER)

currval(seq_name);

同理,可以增加对步长操作的函数,在此不再叙述.

注意语法,数据库字段要对应上

use

bvboms;

DELIMITER

$$

end

总结

以上就是土嘎嘎小编为大家整理的mysql的序列怎么使用相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章