首页 > 解决方案 > 在postgresql中将值插入到大整数范围内的列中

问题描述

我正在尝试用特定范围之间的一些数字填充列的值。

我的专栏的数据类型是 bigint。不是 bigint 数组。

我正在尝试在下面使用代码;

INSERT INTO public.usertransactions (bank_order_code) VALUES 
  ( (SELECT array_agg(g.i) :: bigint
     FROM generate_series(8000,8069) as g(i)));

在此之后我收到此错误:

ERROR:  cannot cast type integer[] to bigint
LINE 2: ( (SELECT array_agg(g.i) :: bigint
                                 ^
SQL state: 42846
Character: 88

我该如何解决。

标签: sqlpostgresql

解决方案


您正在尝试将 的结果array_agg(一个数组)插入到整数列中。

因此,由于您的表中没有bigint数组,因此必须假设您只想在 8000 和 8069 之间创建 70 条记录,因此不需要array_agg,例如

INSERT INTO usertransactions (bank_order_code) 
VALUES (generate_series(8000,8069));

如果您想获得所有生成值的总和,只需使用以下sum()函数

INSERT INTO usertransactions (bank_order_code) 
SELECT sum(i) FROM generate_series(8000,8069) AS g(i);

演示:db<>fiddle


推荐阅读