gpt4 book ai didi

mysql - 在 Rails 和 MySQL 中添加 UUID 主键

转载 作者:行者123 更新时间:2023-11-29 12:15:31 24 4
gpt4 key购买 nike

我有一张没有 ID 的 table 。现在我知道这是一个错误的设计,我想向该表添加主键 ID。这是脚本:

def up
add_column :players, :id, :primary_key, first: true

change_table :players do |t|
t.change :id, :uuid
end
end

def down
remove_column :players, :id
end

问题是脚本为 UUID 列生成整数值。如何正确添加主键UUID到表中?

编辑:它已经投入生产。 我可以添加 ID 列,但它将填充整数,而不是我预期的 UUID。

最佳答案

在数据库环境中,以列 id 作为主键的表将是每一行的唯一标识符。它通常是一个具有自动增量的整数值(但不是必需的),并且通常使用 32 位或 64 位整数。表中没有 2 行具有相同的 id。

在 Rails 中,UUID 是一个全局唯一标识符。它可以用来识别用户、 session 或任何东西。所有类别的 id 都是相同的。它是使用随机生成器创建的,因此为了减少 2 个不同的创建具有相同 UUID 的机会,它是 128 位值。

有多种方法可以使用 UUID 作为主键,但这可能是一个糟糕的设计理念,因为数据库引擎必须基于它查找行,而且由于它太大,查找行的工作可能会更困难。通常,数据库会将 UUID 转换为内部表行 ID。

我猜您需要主键和单独的 UUID 列,但这取决于上下文。

关于mysql - 在 Rails 和 MySQL 中添加 UUID 主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29869720/

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