这些是陈述
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语句。
这样我仍然可以看到过去约会的作业,同时有一个干净的家庭作业表,它需要自动发生,因此我为什么要使用事件。当然,我会欢迎另一种解决方案。
答案 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存储过程文档。