为什么在 phpmyadmin 中删除触发器后会失败?

时间:2021-03-26 09:43:21

标签: mysql triggers phpmyadmin

我有一个表格,其中在各种数据中我有 3 列,命名如下:

  1. 卡萨
  2. InizioPossesso
  3. FinePossesso

每当此表中的一行被 DELETE 命令删除时:

  1. 数据库引擎检查是否存在具有相同值“Casa”和“FinePossesso”= null 的行。
  2. 如果这样的行不存在,则查找与删除的行具有相同的 casa 值且 FinePossesso 日期最高的行,并将该值设置为 NULL。

示例:

ROW 1 - Casa: 1 - InizioPossesso: 10/03/2021 - Fine Possesso: Null -
ROW 2 - Casa: 1 - InizioPossesso: 05/01/2021 - Fine Possesso: 10/03/2021 -
ROW 3 - Casa: 1 - InizioPossesso: 30/09/2020 - Fine Possesso: 05/01/2021 -
ROW 4 - Casa: 2 - InizioPossesso: 05/07/2020 - Fine Possesso: Null -
ROW 5 - Casa: 2 - InizioPossesso: 02/02/2020 - Fine Possesso: 05/07/2020 -

如果我删除第 1 行,系统必须取第 2 行并设置 null FinePossesso(因为没有其他行具有相同的 casa 和 FinePossesso = null 值,并且第 2 行相对于 casa=1 具有最高的 FinePossesso 值).

我是这样写的:

CREATE TRIGGER `casaVecchioProprietario` 
AFTER DELETE ON `casacittadino`
FOR EACH ROW 
BEGIN
IF NOT EXISTS (SELECT * FROM casacittadino WHERE casa = old.casa AND dataFinePossesso is Null)
THEN
UPDATE casacittadino AS cc 
INNER JOIN
(SELECT casa, max(dataInizioPossesso) mdip FROM casacittadino WHERE casa = old.casa GROUP BY casa) cc1 ON cc.casa = cc1.casa AND cc.dataInizioPossesso = cc1.mdip SET dataFinePossesso = null;
END IF;
END

问题是当事件发生时它给了我这个错误:

无法更新存储函数/触发器中的表“casacittadino”,因为它已被调用此存储函数/触发器的语句使用。

我该如何解决?

谢谢!!!!

0 个答案:

没有答案