2016-03-04 64 views
1

由于编码不良,当任何用户试图从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

SQL server或mysql? – Kason

+3

你的代码就像mysql语法。 – Kason

+0

如果你做了'DELETE FROM NEW WHERE(NEW.published = -2);' –

回答

0

读了之后的时候,我无法从内部创建活动一个TRIGGER,我不能以这种方式操作表格(通过删除),因为它试图以阻止初始事件触发的方式操作表格。然而,我可以创建一个每隔5秒左右运行一次以清除-2的事件,但如果我只是深入了解更新并更改它,它会更清晰。很难,但我会留在这里以防万一有人知道一种方法。