我正在尝试为我的数据库编写一个小的触发器,但出现错误:
SQLException:您不能在FROM子句中指定目标表“ p”进行更新
我正在使用的查询是:
create trigger CheckVendibilitaPP
after update on hotel
for each row
if (old.IN_VENDITA=true and new.IN_VENDITA=false) then
update pacchettopreconfigurato as p
set IN_VENDITA=false
where p.id_pp in (select p2.id_pp
from pacchettopreconfigurato as p2 join hotel as h on p2.DESTINAZIONE_PACCHETTO = h.LUOGO
where h.id = new.id)
and (select count(*)
from pacchettopreconfigurato as p3 join hotel as h2 on p3.DESTINAZIONE_PACCHETTO = h2.LUOGO
where p3.id_pp = p.id_pp) > 0;
end if;;
我看到了一些有关共通问题的答案,并尝试了此处显示的某些技术,但这些方法均无效。将查询的第一部分包装在“ SELECT id_pp FROM(select ...)AS c”块中,但这也不起作用。
我应该如何重写查询,以使其停止引发错误?
最佳答案
MySQL文档说:
当前,您无法更新表并从中的同一表中选择
子查询
参见倒数第二行here。
您可以做的是分别运行两个子查询,然后将它们的结果放入变量中。然后用变量代替UPDATE语句中的suq查询。
关于mysql - SQLException:您不能在FROM子句中指定目标表“p”进行更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21337844/