我有一个表格,其中在各种数据中我有 3 列,命名如下:
每当此表中的一行被 DELETE 命令删除时:
示例:
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”,因为它已被调用此存储函数/触发器的语句使用。
我该如何解决?
谢谢!!!!