2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > mysql怎么设置主键增长序列_mysql 如何设置自动增长序列 sequence(一)

mysql怎么设置主键增长序列_mysql 如何设置自动增长序列 sequence(一)

时间:2022-06-18 14:11:38

相关推荐

mysql怎么设置主键增长序列_mysql 如何设置自动增长序列 sequence(一)

背景:由于项目需要,必须用mysql设置主键自增长,而且想用字符串的。经过上网查找并且实验,终于做出了一套方案。现在就共享给大家! 解决思路:由于mysql不带sequence,所以要手写的,创建一张储存sequence的表(tb_sequence),然后手动插入一条数据 ,最后

背景:由于项目需要,必须用mysql设置主键自增长,而且想用字符串的。经过上网查找并且实验,终于做出了一套方案。现在就共享给大家!

解决思路:由于mysql不带sequence,所以要手写的,创建一张储存sequence的表(tb_sequence),然后手动插入一条数据 ,最后自定义一个函数来处理要增长的值。

一起做吧:

1、创建表tb_sequence,用来存放sequence值:

[sql] view

plaincopyprint?

createtabletb_sequence(namevarchar(50)notnull,current_valueintnotnull,_incrementintnotnulldefault1,primarykey(name));

2、手动插入数据:

[sql] view

plaincopyprint?

insertintotb_sequencevalues('userid',100,2);

3、定义函数 _nextval:

[sql] view

plaincopyprint?

DELIMITER //

createfunction_nextval(nvarchar(50))returnsinteger

begin

declare_curint;

set_cur=(selectcurrent_valuefromtb_sequencewherename= n);

updatetb_sequence

setcurrent_value = _cur + _increment

wherename=n ;

return_cur;

end;

//

说明:delimiter // ---->定义语句结束符。其他的代码 自己看吧。

4、恢复默认的语句结束符:(可以省略但是结束符必须用// ,为了方便还是设置回来。)

[sql] view

plaincopyprint?

DELIMITER ;

5、检验结果

多次执行以下语句:

[sql] view

plaincopyprint?

select_nextval('userid');

结果显示:

[sql] view

plaincopyprint?

mysql>select_nextval('userid');

+--------------------+

| _nextval('userid') |

+--------------------+

| 102 |

+--------------------+

1 row inset(0.00 sec)

mysql> select_nextval('userid');

+--------------------+

| _nextval('userid') |

+--------------------+

| 104 |

+--------------------+

1 row inset(0.00 sec)

mysql> select_nextval('userid');

+--------------------+

| _nextval('userid') |

+--------------------+

| 106 |

+--------------------+

1 row inset(0.00 sec)

6、实验结束。

发布php中文网,转载请注明出处,感谢您的尊重!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。