背景:由于项目需要,必须用mysql设置主键自增长,而且想用字符串的。经过上网查找并且实验,终于做出了一套方案。现在就共享给大家! 解决思路:由于mysql不带sequence,所以要手写的,创建一张储存sequence的表(tb_sequence),然后手动插入一条数据 ,最后
背景:由于项目需要,必须用mysql设置主键自增长,而且想用字符串的。经过上网查找并且实验,终于做出了一套方案。现在就共享给大家!
解决思路:由于mysql不带sequence,所以要手写的,创建一张储存sequence的表(tb_sequence),然后手动插入一条数据 ,最后自定义一个函数来处理要增长的值。
一起做吧:
MySQL 创建索引、1、创建表tb_sequence,用来存放sequence值:
[sql] view
plaincopyprint?
createtabletb_sequence(namevarchar(50)notnull,current_valueintnotnull,_incrementintnotnulldefault1,primarykey(name));
2、手动插入数据:
sql添加自动增长列?[sql] view
plaincopyprint?
insertintotb_sequencevalues('userid',100,2);
3、定义函数 _nextval:
[sql] view
MySQL insert、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;
db2 sequence、end;
//
说明:delimiter // ---->定义语句结束符。其他的代码 自己看吧。
4、恢复默认的语句结束符:(可以省略但是结束符必须用// ,为了方便还是设置回来。)
[sql] view
mysql增加自增主键?plaincopyprint?
DELIMITER ;
5、检验结果
多次执行以下语句:
[sql] view
MySQL升序。plaincopyprint?
select_nextval('userid');
结果显示:
[sql] view
plaincopyprint?
mysql执行sql文件,mysql>select_nextval('userid');
+--------------------+
| _nextval('userid') |
+--------------------+
| 102 |
mysql添加主键?+--------------------+
1 row inset(0.00 sec)
mysql> select_nextval('userid');
+--------------------+
| _nextval('userid') |
mysql联合主键,+--------------------+
| 104 |
+--------------------+
1 row inset(0.00 sec)
mysql> select_nextval('userid');
mysql创建sequence?+--------------------+
| _nextval('userid') |
+--------------------+
| 106 |
+--------------------+
mysql设置自增序列为1?1 row inset(0.00 sec)
6、实验结束。
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态