mysql设置UUID为主键需要先将数据类型设置为VARCHAR(36),然后插入数据的时候用UUID函数插入UUID。下面我用win10系统下的CMD命令行具体演示一下:
1、打开CMD,输入mysql -uroot -p命令连接mysql,如下图所示
2、通过create创建表,指定ID为varchar(36),并设置为主键,如下图所示
3、在插入数据的时候,调用uuid()函数往主键字段里插入uuid值,如下图所示
4、最后查询插入的数据就可以看到id主键列存放的是uuid类型了,如下图所示
MYSQL中表1需要准备大量数据,内容主要取自表2,id必须为32位uuid
(项目所有表都是这样,没办法),
准备这样插入:
1
INSERT
INTO
TBL_ONE
(ID,
SOID,
SNAME)
SELECT
2
REPLACE
(UUID(),
'-',
''),
3
TWO.ID,
4
TWO.NAME
5
FROM
6
TBL_TWO
TWO
报错:
Duplicate
entry
'4534c15dc2a111e6a9ab000ec6c596eb'
for
key
'PRIMARY',显然主键冲突了,
REPLACE
(UUID(),
'-',
'')
仅执行了一次,
找了半天,似乎也没有最简单的解决方案。退而求其次,我想到的最简单解决方案:
1
INSERT
INTO
TBL_ONE
(ID,
SOID,
SNAME)
SELECT
2
UUID(),
#UUID()为什么可以?
3
TWO.ID,
4
TWO.
NAME
5
FROM
6
TBL_TWO
TWO7
8
UPDATE
TBL_ONE
SET
ID
=
REPLACE
(ID,
'-',
'')
uuid()生成的id不会重复,但是会有"-",用空格替换一下就ok了。
updatetest
set
id
=
UUID()MYSQL无法在默认值中设置UUID函数,实际上其它函数除TIMESTAMP之外都不可以。
MYSQL的默认值目前只能是常数或者CURRENTTIMESTAMP。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)