gpt4 book ai didi

Postgresql 将列类型从 int 更改为 UUID

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

我想将列类型从 int 更改为 uuid。我正在使用以下语句

ALTER TABLE tableA ALTER COLUMN colA SET DATA TYPE UUID;

但是我收到错误信息

ERROR:  column "colA" cannot be cast automatically to type uuid
HINT: Specify a USING expression to perform the conversion.

我很困惑如何使用 USING 进行转换。

最佳答案

您不能只将 int4 转换为 uuid;这将是一个无效的 uuid,仅设置了 32 位,高 96 位为零。

如果您想要生成新的 UUID 来完全替换整数,并且如果不存在对这些整数的现有外键引用,您可以使用实际生成新值的假转换。

不要在没有数据备份的情况下运行。它会永久丢弃 colA 中的旧值。

ALTER TABLE tableA ALTER COLUMN colA SET DATA TYPE UUID USING (uuid_generate_v4());

更好的方法通常是添加一个 uuid 列,然后修复任何外键引用以指向它,最后删除原始列。

您需要安装 UUID 模块:

CREATE EXTENSION "uuid-ossp";

引号很重要。

关于Postgresql 将列类型从 int 更改为 UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20342717/

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