我有一个PostgreSQL(9.0)数据库,其中列card_id当前为integer类型我需要将此更改为键入文本实现这一目标的最佳途径是什么?我能找到的唯一解决方案是创建一个临时列,删除原来的列,然后重命名,我想他们可能是一个更好的方法??
ccrfmcuu1#
你有没有试过什么精细手册suggests:
ALTER TABLE table ALTER COLUMN anycol TYPE anytype;
根据当前类型和新类型,您可能需要将USING ...添加到此语句。但在你的具体情况下,我认为这是不必要的。
USING ...
fquxozlt2#
ALTER TABLE table ALTER COLUMN card_id SET DATA TYPE text;
s3fp2yjn3#
将现有的数值列转换为布尔值(在Oracle到PostgreSQL的迁移过程中遇到了这个问题),同时删除并启用默认约束:
ALTER TABLE table_name ALTER COLUMN column_name DROP DEFAULT, ALTER COLUMN column_name TYPE BOOLEAN USING (case when column_name =1 then true else false end)::BOOLEAN, ALTER COLUMN column_name SET DEFAULT false;
3条答案
按热度按时间ccrfmcuu1#
你有没有试过什么精细手册suggests:
根据当前类型和新类型,您可能需要将
USING ...
添加到此语句。但在你的具体情况下,我认为这是不必要的。fquxozlt2#
s3fp2yjn3#
将现有的数值列转换为布尔值(在Oracle到PostgreSQL的迁移过程中遇到了这个问题),同时删除并启用默认约束: