触发器中的IF语句语法

时间:2014-07-12 20:58:15

标签: mysql triggers

CREATE TRIGGER likeTr
BEFORE INSERT ON posts
FOR EACH ROW
BEGIN
DECLARE user_id INTEGER;
DECLARE post_id INTEGER;
DECLARE old_user_id INTEGER;
DECLARE old_post_id INTEGER;

SET user_id = NEW.uid;
SET post_id = NEW.pid;

SELECT uid,pid
INTO old_user_id,old_post_id
FROM likes
WHERE user_id = uid AND post_id = pid;

IF (user_id IS old_user_id AND post_id IS old_post_id) THEN
    DELETE FROM likes WHERE pid = post_id AND uid = user_id;
    UPDATE posts SET likes = likes-1 WHERE pid = post_id;
ELSE
    INSERT INTO likes (pid , uid) VALUES (post_id , user_id);
    UPDATE posts SET likes = likes+1 WHERE pid = post_id;
END IF;
END;

我是触发器mysql的初学者,我已经写了这个触发器来做一些任务但是当我尝试在phpmyadmin中提交它时它会在第18行发送错误(IF(user_id IS old_user_id和post_id IS old_post_id)那么)

我不知道原因,任何建议

1 个答案:

答案 0 :(得分:0)

试试这个:

IF (user_id = old_user_id AND post_id = old_post_id) THEN

而不是

IF (user_id IS old_user_id AND post_id IS old_post_id) THEN