2011-09-10 77 views
-1

我想只設置一行激活。 如果有人嘗試之前,所有其他estrutura_versao_status設置estrutura_versao_status爲1,設置爲0,並保持這個新行作爲唯一一家estrutura_versao_status = 1這個觸發器有什麼問題?

CREATE TRIGGER tgr_classifica_ativa_revisao BEFORE INSERT ON `sys_estrutura` 
FOR EACH ROW 
BEGIN 
    IF (NEW.estrutura_versao_status = 1) THEN 
     UPDATE `sys_estrutura` SET estrutura_versao_status = 0; 
    END IF; 
END; 

這是錯誤:你在你的SQL有一個錯誤句法;檢查與您的MySQL服務器版本相對應的手冊,在第5行附近使用正確的語法

回答

2

假設您要爲新插入的行設置標誌,只需使用將其分配給NEW變量。沒有必要在桌子上進行更新。

CREATE TRIGGER tgr_classifica_ativa_revisao BEFORE INSERT ON sys_estrutura 
FOR EACH ROW 
BEGIN 
    IF (NEW.estrutura_versao_status = 1) THEN 
     SET NEW.estrutura_versao_status = 0; 
    END IF; 
END; 
+0

我得到這個錯誤你的SQL語法錯誤;檢查對應於你的MySQL服務器版本的手冊,在第5行的''附近使用正確的語法 –

+0

關鍵是表中只有一個表中estrutura_versao_status設置爲1的條目(我猜)。 – Friek

+0

什麼是錯的?仍然會出現錯誤... –

相關問題