MySQL:有条件地根据某个字段运行查询1或查询2

时间:2014-01-10 15:34:49

标签: mysql

我正在创建一个触发器,如果​​新插入的行中的字段statuscode的值为200,则应该运行查询1 。但是如果statuscode比如说300运行查询2 。这在MySQL中是否可行?

我尝试了第一件事,但这显然是错误的。

CREATE TRIGGER mytrigger AFTER INSERT ON tableA
    FOR EACH ROW BEGIN
    IF(new.statuscode = 200,
        (DELETE FROM tableB WHERE new.guid = tableB.guid),
        (UPDATE tableB SET is_complete = 0 WHERE new.guid = tableB.guid))
END
//
DELIMITER ;

2 个答案:

答案 0 :(得分:0)

我认为你的IF语法错误。如果语句应该有THEN和ENDIF关键字。

http://dev.mysql.com/doc/refman/5.0/en/if.html

我在6个月左右没有使用MySQL,所以希望这种语法是正确的:

CREATE TRIGGER mytrigger AFTER INSERT ON tableA
    FOR EACH ROW BEGIN
    IF new.statuscode = 200  THEN
        DELETE FROM tableB WHERE new.guid = tableB.guid;
    ELSE 
        UPDATE tableB SET is_complete = 0 WHERE new.guid = tableB.guid;
    END IF;
END

答案 1 :(得分:0)

mysql过程中IF / ELSE的语法是:

IF (NEW.statuscode = 200) THEN
   DELETE FROM tableB WHERE new.guid = tableB.guid;
ELSE
   UPDATE tableB SET is_complete = 0 WHERE new.guid = tableB.guid;
END IF;

以下是触发器语法的文档: http://dev.mysql.com/doc/refman/5.5/en/if.html