我想将列类型从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位为零。
原文链接:https://www.f2er.com/postgresql/192878.html如果要生成新的UUID以完全替换整数,并且如果没有这些整数的现有外键引用,则可以使用实际生成新值的假转换。
不要在没有数据备份的情况下运行。它永久地抛弃了colA中的旧值。
ALTER TABLE tableA ALTER COLUMN colA SET DATA TYPE UUID USING (uuid_generate_v4());
一个更好的方法通常是添加一个uuid列,然后修复任何外键引用来指向它,最后删除原始列。
您需要安装UUID模块:
CREATE EXTENSION "uuid-ossp";
报价很重要。