2013-02-07 38 views
1

我有一个触发器,它引用是从一个删除查询来一个全局变量设置触发器关:MySQL的触发器:错误检查时,如果变量存在

DELIMITER ;; 

CREATE TRIGGER test_trigger BEFORE DELETE ON test_table FOR EACH ROW 
BEGIN 

    IF (SELECT @userID IS NULL) 
    THEN @userID := 0 
    END IF; 

END 
;; 

DELIMITER ; 

出于某种原因,我收到SQL错误:

SQL Error (1064): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@userID := 0 

我不明白这是一个非常基本的IF语句,为什么它不起作用?

更新:我完全糊涂了,我已经试过这

IF TRUE 
THEN TRUE 
END IF; 

,它仍然抛出一个错误......真的吗?

更新2:解决这实际工作,但是这是非常奇怪的

IF (SELECT @userID IS NULL) 
THEN SET userID = 0; 
END IF; 

显然,你需要一个分号内IF语句?

回答

0
CREATE TRIGGER test_trigger BEFORE DELETE ON test_table FOR EACH ROW 
BEGIN 
    IF (SELECT @userID IS NULL) 
    THEN 
    SET @userID = 0; 
END IF; 
END; 
+0

我们必须把SET键工作,而不是@userid的:= 0 – Madhav

+0

其实它仍然无法正常工作,但如果我把分号0后,它的工作。很奇怪。 – Caballero

+0

把semicolan和运行它 – Madhav