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了。
在mysql中可以把UUID作为逻辑主键,物理主键依然使用自增ID1、UUID定义
UUID含义是通用唯一识别码
(Universally
Unique
Identifier),这
是一个软件建构的标准,也是被开源软件基金会
(Open
Software
Foundation,
OSF)
的组织应用在分布式计算...
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)