gpt4 book ai didi

php - pg_prepare : cannot insert multiple commands into a prepared statement

转载 作者:行者123 更新时间:2023-11-29 12:21:34 31 4
gpt4 key购买 nike

我有 2 个表,TableA 和 TableB。 TableB 有一个指向 TableA 的 fk 字段。

我需要对 TableA 使用 DELETE 语句,当其中的一条记录被删除时,我需要删除 TableB 中与 TableA 中的该记录相关的所有记录。非常基本。

begin;

DELETE FROM TableB
WHERE nu_fornecedor = $1;

DELETE FROM TableA
WHERE nu_fornecedor = $1;

commit;

这个字符串被传递给 pg_prepare(),但是我得到了错误错误:无法将多个命令插入准备好的语句

好的,但我需要在同一个事务中运行这两个命令,我不能执行 2 个单独的语句。我尝试在没有 begin-commit 的情况下使用 with 并得到了同样的错误。

知道怎么做吗?

最佳答案

要了解正在发生的事情和您的选择,让我解释一下什么是准备好的语句,什么不是。您可以使用 pg_prepare,但只能用于单独的语句,不能用于整个事务。

准备好的语句是传递给 PostgreSQL 的语句,然后对其进行解析并存储为解析树以供将来使用。在第一次执行时,解析树根据提供的输入进行规划,并执行,并将计划缓存起来以备将来使用。通常使用准备好的语句没有什么意义,除非你想重用查询计划(即执行一堆其他相同的更新语句,命中大致相同的行数),所有这些都在同一个事务中。

如果您想要的东西可以让您从解析树中分离参数但不缓存计划,请参阅 PHP 文档中的 pg_query_param()。这可能就是您想要的。

关于php - pg_prepare : cannot insert multiple commands into a prepared statement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19589841/

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