PostgreSQL:如何解决"数字字段溢出"问题

day*_*mer 21 postgresql

我有一个包含以下架构的表

COLUMN_NAME,ORDINAL_POSITION,....,NUMERIC_PRECISION_INTEGER
"year"; 1;"";"YES";"numeric";;; 17; 10; 17"month_num"; 2;"";"YES";"numeric" ;;; 17; 10; 17"month_name"; 3;"";"YES";"text";; 1073741824 ;;;
"week_of_month"; 4;"";"YES";"数字";;; 17; 10; 17
"count_of_contracts"; 5;"";"YES";"bigint";;; 64; 2; 0

但是当我将以下内容插入其中时

insert into contract_fact values(2011, 8, 'Aug', 1, 367)  
Run Code Online (Sandbox Code Playgroud)

我看到以下错误

错误:数字字段溢出
SQL状态:22003
详细信息:精度为17的字段,比例17必须舍入到小于1的绝对值.

Pet*_*aut 67

看起来您将您的列yearweek_of_month列定义为numeric(17,17),这意味着17位数,其中17位在小数点后面.所以值必须介于0和1之间.您可能意味着numeric(17,0),或者您可能应该使用整数类型.

  • +1,尽管格式混乱,但仍然很好 (15认同)