Postgresql将列类型从int更改为UUID

前端之家收集整理的这篇文章主要介绍了Postgresql将列类型从int更改为UUID前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将列类型从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";

报价很重要。

原文链接:https://www.f2er.com/postgresql/192878.html

猜你在找的Postgre SQL相关文章