2012-04-24 39 views
2

我無法找到代碼中的哪個位置觸發了一個查詢,並且想知道是否有一個mysql配置在觸發時會拒絕該查詢?例如,在我的情況下,它是UPDATE table SET col1 = NULL, col2 = NULL, col3 = NULL ...請幫助!在mysql中拒絕某個查詢

+2

你可以添加一個'BEFORE UPDATE' [觸發](http://dev.mysql.com/doc/refman/5.6/en/triggers.html)到你的'table',但實際上我覺得你應該追蹤'UPDATE'在你的代碼中的位置。 – eggyal 2012-04-24 15:48:17

+0

只是要清楚,這不是我的代碼,它是一個噩夢追查:( – eistrati 2012-04-24 15:48:44

+0

@eggyal:在這種情況下'BEFORE UPDATE'將如何看起來像? – eistrati 2012-04-24 15:51:49

回答

5

如上所述,您可以使用trigger;只需調用一個不存在的過程來在滿足所需條件時產生錯誤。

DELIMITER ;; 

CREATE TRIGGER reject_null_table_update BEFORE UPDATE ON table FOR EACH ROW 
IF 
     NEW.col1 IS NULL 
    AND NEW.col2 IS NULL 
    AND NEW.col3 IS NULL 
    -- etc 
THEN 
    CALL raise_error(); 
END IF;; 

DELIMITER ; 
+0

抱歉愚蠢的問題,但我從來沒有在MySQL中使用觸發器...我可以在'raise_error()'中定製消息嗎? – eistrati 2012-04-24 16:04:49