当更新将列设置为特定值时删除行

Delete row when update sets column to specific value

由于编码不当,当任何用户试图从 Joomla (SQL 5.5) 后端删除联系人类别时,我们的网站就会崩溃。它没有删除它,而是将 "published" 列更新为 -2(其中 1 已发布,-1 未发布)。由于无法找到导致此问题的根源,我们几乎立即着手尝试创建一个触发器来完全删除该类别。

CREATE TRIGGER `PermaDelete`
AFTER UPDATE
ON `nac_categories`

FOR EACH ROW
    DELETE FROM nac_categories WHERE (NEW.published = -2);

我收到的错误是

Error
Can't update table 'nac_categories' in stored function/trigger because it is already used by statement which invoked this stored function/trigger. SQL=UPDATE `nac_categories` SET published = -2 WHERE (lft > 0 AND rgt < 0) OR id = 36

基本上,我只是想在发布更新为-2时删除类别

读完之后,我无法从 TRIGGER 中创建 EVENT,我也无法以这种方式操纵 table(通过删除),因为它试图以一种方式操纵 table防止初始事件触发的方式。但是,我可以创建一个 运行 每 5 秒左右的事件来清除 -2,但如果我只是深入研究 php 进行更新并更改它,它会更干净。更难,但我会留意这里,以防万一有人知道一种方法。