pgsql整数超出范围的负值

问题描述 投票:0回答:1

对大多数人来说,这可能是一个简单的问题。然而,我无法避免这个错误。我有一个id(primary_key)的表,表的数据类型是bigint,我们从最小-负值(-9223372036854775808)开始向表中输入记录。

现在,我需要根据每个记录数据对该表进行一些操作。所以,我需要对所有记录进行迭代。这是我使用的示例循环,我得到以下错误。

    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;$$

任何立即的帮助解决将是非常感激的。

postgresql for-loop npgsql
1个回答
1
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.