gpt4 book ai didi

MySql 插入选择 uuid()

转载 作者:可可西里 更新时间:2023-11-01 06:31:32 24 4
gpt4 key购买 nike

假设你有一张 table :

`item`

带字段:

`id` VARCHAR( 36 ) NOT NULL
,`order` BIGINT UNSIGNED NOT NULL

和:

Unique(`id`)

然后你调用:

INSERT INTO `item` (
`item`.`id`,`item`.`order`
) SELECT uuid(), `item`.`order`+1

MySql 会将相同的 uuid 插入到所有新创建的行中。

所以如果你开始:

aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa, 0
bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb, 1

你最终会得到:

aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa, 0
bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb, 1
cccccccc-cccc-cccc-cccc-cccccccccccc, 1
cccccccc-cccc-cccc-cccc-cccccccccccc, 2

如何命令 MySql 为每一行创建不同的 uuid?

我知道以下内容在 MSSQL 中按预期工作:

INSERT INTO item (
id,[order]
) SELECT newid(), [order]+1

注意我知道我可以选择结果,遍历它们并从我的 PHP 代码中为每一行发出一个单独的 INSERT 命令,但我不想这样做。我希望工作在应该完成的数据库服务器上完成。

最佳答案

原来 uuid() 每行生成一个不同的 uuid。

但是,MySql 似乎只是随机生成第二个 block ,而不是像我通常期望的那样随机生成所有 block 。大概是为了更有效率。

因此乍看之下,uuid 看起来是相同的,而实际上 MySql 已经更改了第二个 block 。例如

cccccccc-cccc-cccc-cccc-cccccccccccc
ccccdddd-cccc-cccc-cccc-cccccccccccc
cccceeee-cccc-cccc-cccc-cccccccccccc
ccccffff-cccc-cccc-cccc-cccccccccccc

我假设如果发生碰撞,它会重试。

我的错。

关于MySql 插入选择 uuid(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6300849/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com