加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Postgresql将列类型从int更改为UUID

发布时间:2020-12-13 16:35:29 所属栏目:百科 来源:网络整理
导读:我想将列类型从int更改为uuid。我使用以下语句 ALTER TABLE tableA ALTER COLUMN colA SET DATA TYPE UUID; 但是我收到错误消息 ERROR: column "colA" cannot be cast automatically to type uuidHINT: Specify a USING expression to perform the conversio
我想将列类型从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";

报价很重要。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读