Postgres:如何将列类型从字符串转换为具有默认值的整数?

时间:2017-04-06 18:39:39

标签: postgresql

postgres的新手。

我有一个名为" customer_id"在Postgres中,目前定义为"字符变化"。

查看数据库,很多行都是NULL。

我需要此列为具有可能NULL值的INTEGER 我怎么能在postgres中做到这一点?

我尝试运行查询:

 alter table leads alter column customer_id type INTEGER using CAST("customer_id" as INTEGER);

但是我收到一个错误说:

 default for column "customer_id" cannot be cast automatically to type integer

1 个答案:

答案 0 :(得分:3)

据我了解,您需要将“字符变化”列转换为INTEGER。

您似乎拥有此“字符变化”列的默认值,而postgres无法“附加”INTEGER类型的值。

如果是这样,您可以先删除默认值,将列转换为INTEGER并添加适用于INTEGER类型的默认值。像这样:

alter table leads alter customer_id drop default;

alter table leads alter column customer_id type INTEGER using CAST("customer_id" as INTEGER);

alter table leads alter customer_id set default <YOUR DEFAULT VALUE HERE>;