我正在尝试将列上的类型从一种复合类型更改为另一种复合类型。两种复合类型之间的唯一区别是前一种复合类型使用了阻止该属性为空的自定义域。运行命令后:
ALTER TABLE contact_address ALTER COLUMN target TYPE nullable_mailing_address USING target::nullable_mailing_address;
我收到错误:
ERROR: cannot cast type mailing_address to nullable_mailing_address
在两种相似的复合类型之间进行投射的正确方法是什么?谢谢!
答案 0 :(得分:1)
分解然后将旧类型组合成新类型。如果您刚刚更改了字段类型,例如:
ALTER TABLE contact_address
ALTER COLUMN target TYPE nullable_mailing_address
USING ((target).non_changed_field, (target).changed_field::new_type);
如果您添加/删除字段几乎相同。