2016-03-04 63 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的事件,但如果我只是深入瞭解更新並更改它,它會更清晰。很難,但我會留在這裏以防萬一有人知道一種方法。