如何在mysql事件中使用多个sql语句?

时间:2017-02-24 12:15:08

标签: mysql sql events

这些是陈述

INSERT INTO toolate (name,type,date) 
SELECT  name, type ,date 
FROM homework 
WHERE date < CURRENT_DATE()

DELETE FROM homework WHERE date < CURRENT_DATE()

我需要将这两者结合起来,以便我的事件能以正确的顺序运作。 首先是INSERT语句,然后是DELETE语句。

这样我仍然可以看到过去约会的作业,同时有一个干净的家庭作业表,它需要自动发生,因此我为什么要使用事件。当然,我会欢迎另一种解决方案。

1 个答案:

答案 0 :(得分:1)

您不能在一个查询中组合这两个。但是,另一种方法是使用STORED PROCEDURE并在transaction EXIT HANDLER内执行这两项,例如:

BEGIN

    START TRANSACTION;

        DECLARE EXIT HANDLER FOR SQLEXCEPTION 

        BEGIN
            ROLLBACK;
            EXIT PROCEDURE;
        END;

        INSERT INTO toolate (name,type,date) 
        SELECT  name, type ,date 
        FROM homework 
        WHERE date < CURRENT_DATE()

        DELETE FROM homework WHERE date < CURRENT_DATE()

    COMMIT;
END

这将确保这两个查询都按顺序执行,如果DELETE查询失败,INSERT将被回滚。

Here的MtSQL存储过程文档。