11
ALTER TABLE products ALTER COLUMN power_price DROP DEFAULT;
ALTER TABLE products ALTER COLUMN power_price TYPE bool USING (power_price::boolean);
ALTER TABLE products ALTER COLUMN power_price SET NOT NULL;
ALTER TABLE products ALTER COLUMN power_price SET DEFAULT false;

Postgres 给了我这个错误:

查询失败:错误:无法将类型数字转换为布尔值

4

1 回答 1

40

采用:

ALTER TABLE products ALTER power_price TYPE bool USING (power_price::int::bool);

numeric和之间没有定义直接转换boolean。您可以integer用作中间地带。text将是中间立场的另一个候选者,因为每种类型都可以从 / 转换为text. 价值观当然是必须1 / 0的。

更好的是,在一个命令中完成所有操作以获得更好的性能和更短的锁定时间:

ALTER TABLE products
  ALTER power_price DROP DEFAULT
 ,ALTER power_price TYPE bool USING (power_price::int::bool)
 ,ALTER power_price SET NOT NULL
 ,ALTER power_price SET DEFAULT false;

手册中有关ALTER TABLE.

于 2013-10-10T08:25:21.947 回答