Hik*_*ari 5 php postgresql transactions prepared-statement
我有 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;
Run Code Online (Sandbox Code Playgroud)
此字符串传递给 pg_prepare(),但随后出现错误
ERROR: cannot insert multiple commands into a prepared statement
好的,但是我需要在同一个事务中运行这两个命令,我不能执行 2 个分开的语句。我尝试在没有开始提交的情况下使用 with 并得到同样的错误。
知道怎么做吗?
Chr*_*ers -1
为了了解正在发生的情况以及您的选择,让我解释一下什么是准备好的声明,什么不是。您可以使用 pg_prepare,但只能用于单独的语句,不能用于整个事务。
准备好的语句是传递给 PostgreSQL 的语句,然后对其进行解析并存储为解析树以供将来使用。第一次执行时,将使用提供的输入来规划解析树,并执行该规划,并缓存该计划以供将来使用。通常,使用准备好的语句没有什么意义,除非您想重用查询计划(即执行一堆相同的更新语句,命中大致相同的行数),所有这些都在同一个事务中。
如果您想要一些可以从解析树中分离参数但不缓存计划的功能,请参阅 PHP 文档中的 pg_query_param() 。这可能就是你想要的。
| 归档时间: |
|
| 查看次数: |
11801 次 |
| 最近记录: |