mysql创建数据库时怎么将主键设置为UUID,建表语句怎么写

mysql创建数据库时怎么将主键设置为UUID,建表语句怎么写,第1张

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了。

update

test

set

id

=

UUID()MYSQL无法在默认值中设置UUID函数,实际上其它函数除TIMESTAMP之外都不可以。

MYSQL的默认值目前只能是常数或者CURRENTTIMESTAMP。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7885448.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存