更新表时如何将uuid类型值转换为uuid[]类型存入目标列?
解决PostgreSQL中UUID列转UUID数组列的类型不匹配问题
直接更新临时列的正确写法
你遇到的错误是因为直接将单个uuid类型的值赋值给uuid[](UUID数组)类型的列,PostgreSQL无法自动完成这种类型转换。解决方法是把单个UUID值包装成数组,有几种可行方式:
- 使用数组构造器
ARRAY[]
UPDATE ABC SET temp_cities = ARRAY[city];
- 使用
array()函数
UPDATE ABC SET temp_cities = array(city);
- 显式类型转换
UPDATE ABC SET temp_cities = city::uuid[];
后续替换原列的完整流程(可选)
如果最终需要把原city列替换成UUID数组类型,可以按以下步骤操作:
- 确认临时列
temp_cities已正确更新数据 - 删除原
city列 - 将临时列重命名为
city
对应的SQL语句:
-- 确保临时列数据正确 UPDATE ABC SET temp_cities = ARRAY[city]; -- 删除原列 ALTER TABLE ABC DROP COLUMN city; -- 重命名临时列 ALTER TABLE ABC RENAME COLUMN temp_cities TO city;
内容的提问来源于stack exchange,提问作者Akshay Salekar
相关产品推荐
相关产品推荐

