我们需要让我们的架构支持多种货币。因此,使用货币字段不是一种选择。所以,我试图将货币列转换为数字(12,2)。我尝试了以下方法:
ALTER TABLE lead ALTER COLUMN deal_size TYPE NUMERIC(12, 2);
ALTER TABLE lead ALTER COLUMN deal_size TYPE NUMERIC(12, 2) using deal_size::money::numeric(12,2);
每次出现以下错误:
错误:数字字段溢出 细节:精度为12的字段,比例2必须舍入到小于10 ^ 10 的绝对值。
我确认表中此列的值都不超过$ 1,000,000
答案 0 :(得分:0)
我在PostgreSQL中测试以下内容并且运行良好。你正在运行什么版本的PostgreSQL?
create temp table lead (id serial not null primary key, deal_size money);
insert into lead (deal_size) select (random()*100000000)::numeric(14,4) from generate_series(1,10000) a;
ALTER TABLE lead ALTER COLUMN deal_size TYPE NUMERIC(12, 2);
您的值不超过一百万。你测试了大的负值吗?