gpt4 book ai didi

sql - 如何在 plpgsql 中进行批量提交?

转载 作者:行者123 更新时间:2023-11-29 11:48:06 26 4
gpt4 key购买 nike

当我执行以下功能时,出现了一些错误:

**ddddl=# select sssss(1,10);
ERROR: cannot begin/end transactions in PL/pgSQL
HINT: Use a BEGIN block with an EXCEPTION clause instead.
CONTEXT: PL/pgSQL function sssss(integer,integer) line 8 at SQL statement**

这是我的示例代码。

CREATE OR REPLACE FUNCTION sssss(
IN c_1 int,
IN f_i int
) returns void as
$$
DECLARE t_c INT;
BEGIN
t_c := f_i;
WHILE c_1 <= t_c
loop
IF MOD(c_1, 4) = 1 THEN
start transaction;
END IF;
-- My statements here.
IF MOD(c_1, 4) = 0 THEN
COMMIT;
END IF;
c_1 := c_1 + 1;
END loop;
COMMIT;
END;
$$ language plpgsql;

那么谁能给我一个示例,说明如何按照上面的代码完成我的工作?

我正在使用 PostgreSQL 9.2。

最佳答案

一般来说,我认为您可以采用三种方法:

  • 不用。让整个事情立即提交,就像 PostgreSQL 想要的那样。
  • 在应用程序代码中编写一个包装程序来设置事务并调用您的函数。 (例如,这在 shell 脚本中很简单。)
  • 使用技巧。存在的一种技巧是,您可以让您的函数创建一个数据库链接到您自己的数据库,并通过远程 session 执行子事务。 [ More information. ](这基本上等同于“应用程序代码中的包装器”方法,只是应用程序代码仍在 PL/pgSQL 中。)

关于sql - 如何在 plpgsql 中进行批量提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21071388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com