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
对于你们中的大多数人来说,这听起来可能是一个简单的问题。但是,我无法避免此错误。我有一个带有 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