mysql 新增一条记录时怎么让id的值为uuid的值?
为了以后分布式分表的方便,现在我想将id值换成UUID()的值,不用自增id来作为主键。
如下这种方式时需要人设置,:
INSERT INTO test(uuid) VALUES(UUID());
mysql 新增一条记录时怎么让id的值为mysql默认的uuid()的值?就像自增id那样,当我插入一天数据时,不用指定自增id的值,数据库自动增长。
请问怎么将id的值设置为当新增一天记录时,id自动为UUID()的值。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
可以这样试试:
更正
刚才草率地回答了,看来MySQL的DEFAULT是不支持函数的,只有
CURRENT_TIMESTAMP
是个例外。通常在数据库分库后,主键仍旧得是集中式生成的,生成方式有很多种,比如用一个“主数据库”的自增列、用Redis、程序自己生成(正如题主所说用UUID)。
但还有一个办法,尽管不常用,但处理起来比较简单,就是给每个库设置一定的自增规律,让他们不重复,有两种办法,以2个库为例:
第一个库主键自增规则是
2 n + 1
(从1开始,每次自增2),第二个库是2 n + 2
(从2开始,每次自增2),自增步长可以通过修改my.cnf
文件实现;先预计整个表的主键上限,比如1,000,000,000(10亿),第一个库主键从1开始自增,第二个库的从1,000,000,001开始自增。
貌似不行吧。除非写个存储过程?
创建个触发器,如下
别干这傻事,每个表都应该有一个整型的主键。用整型主键一样可以分库分表啊。