小白请教如何在mysql数据库中使用uuid为主键

小白请教如何在mysql数据库中使用uuid为主键,第1张

MYSQL

中表1需要准备大量数据,内容主要取自表2,id必须为32位uuid

(项目所有表都是这样,没办法),

准备这样插入:

1

INSERT

INTO

TBL_ONE

(ID,

SOID,

SNAME)

SELECT

2

REPLACE

(UUID(),

'-',

''),

3

TWOID,

4

TWONAME

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

TWOID,

4

TWO

NAME

5

FROM

6

TBL_TWO

TWO;7

8

UPDATE

TBL_ONE

SET

ID

=

REPLACE

(ID,

'-',

'');

uuid()生成的id不会重复,但是会有"-",用空格替换一下就ok了。

UDID和UUID的区别如下:

一、定义的不同:

所谓UDID指的是设备的唯一设备识别符,移动广告商和游戏网络运营商往往需要通过UDID用来识别玩家用户,并对用户活动进行跟踪。。而UUID 是通用唯一识别码,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。

二、用途不同:

UDID用于一些统计与分析目的、将UDID作为用户ID来唯一识别用户,省去用户名,密码等注册过程。而UUID 的目的是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。

扩展资料:

基于时间的UUID通过计算当前时间戳、随机数和机器MAC地址得到。由于在算法中使用了MAC地址,这个版本的UUID可以保证在全球范围的唯一性。但与此同时,使用MAC地址会带来安全性问题,这就是这个版本UUID受到批评的地方。如果应用只是在局域网中使用,也可以使用退化的算法,以IP地址来代替MAC地址--Java的UUID往往是这样实现的。

通用唯一标识符还可以用来指向大多数的可能的物体。微软和其他一些软件公司都倾向使用全球唯一标识符(GUID),这也是通用唯一标识符的一种类型,可用来指向组建对象模块对象和其他的软件组件。第一个通用唯一标识符是在网络计算机系统(NCS)中创建,并且随后成为开放软件基金会(OSF)的分布式计算环境(DCE)的组件。

参考资料来源:百度百科-UDID

参考资料来源:百度百科-UUID

以上就是关于小白请教如何在mysql数据库中使用uuid为主键全部的内容,包括:小白请教如何在mysql数据库中使用uuid为主键、关于UDID和UUID的区别、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/9690837.html

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

发表评论

登录后才能评论

评论列表(0条)

保存