pgsql 整数超出负值范围

pgsql integer out of range for negative values

对于你们中的大多数人来说,这听起来可能是一个简单的问题。但是,我无法避免此错误。我有一个带有 id(primary_key) 和 bigint 数据类型的 table,我们开始将记录输入最小负值 (-9223372036854775808).

现在,我需要根据每条记录数据对table做一些操作。所以,我需要遍历所有记录。这是示例循环,我正在使用,但出现以下错误:

    psql:update-migration2.sql:39: ERROR:  integer out of range
 CONTEXT:  PL/pgSQL function inline_code_block line 5 at FOR with integer loop variable

下面是出现此错误的示例循环:

 do $$
declare
i bigint;
begin
for i in -9223372036854775808 ..  -9223372036852105062 loop
-- my logic
i := i + 1;
end loop;
end;$$

任何直接 help/solution 将不胜感激。

FOR ... LOOP 仅适用于整数(-2147483648 到 +2147483647)

这没问题:

do $$
declare
i bigint;
begin
for i in -2147483648 .. -2147483647  loop
-- my logic
end loop;
end;$$
DO

这失败了:

do $$
declare
i bigint;
begin
for i in -2147483649 .. -2147483647  loop
-- my logic
end loop;
end;$$
ERROR:  integer out of range
CONTEXT:  PL/pgSQL function inline_code_block line 5 at FOR with integer loop variable