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

时间:2016-03-04 06:10:59

标签: sql triggers mysql-5.5

由于编码不佳,当任何用户试图从Joomla的后端删除联系人类别时,我们的网站会发生心脏病发作(SQL 5.5)。它不会删除它,而是将“已发布”列更新为-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

1 个答案:

答案 0 :(得分:0)

在阅读之后,我无法在TRIGGER中创建EVENT,并且我无法以这种方式操纵表(通过删除),因为它试图以防止初始事件触发的方式操纵表。但是,我可以创建一个每5秒左右运行一次以清除-2的事件,但如果我只是深入了解更新并更改它,那将会更清晰。很难,但我会留在这里,以防万一有人知道方法。