Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在事件调度器中使用事务的MYSQL_Mysql_Events_Transactions_Scheduler - Fatal编程技术网

在事件调度器中使用事务的MYSQL

在事件调度器中使用事务的MYSQL,mysql,events,transactions,scheduler,Mysql,Events,Transactions,Scheduler,我试图在MYSQL的预定事件中使用一个事务,它只是不包括整个事务,只包括启动事务;部分 我尝试过包装我的代码,删除分号,设置autocommit=0,并以各种方式对代码进行消隐处理,但都没有效果。我只是想知道如何运行一个完成截断表的截断和重新填充的事务 CREATE EVENT IF NOT EXISTS monitored_15min ON SCHEDULE EVERY 1 MINUTE STARTS CURRENT_TIMESTAMP DO START TRANSACTION; TRUN

我试图在MYSQL的预定事件中使用一个事务,它只是不包括整个事务,只包括启动事务;部分

我尝试过包装我的代码,删除分号,设置autocommit=0,并以各种方式对代码进行消隐处理,但都没有效果。我只是想知道如何运行一个完成截断表的截断和重新填充的事务

CREATE EVENT IF NOT EXISTS monitored_15min
ON SCHEDULE EVERY 1 MINUTE
STARTS CURRENT_TIMESTAMP
DO

START TRANSACTION;

TRUNCATE dashboard.monitored;
INSERT INTO dashboard.monitored (brand,product,Status,old_Price,Current_Price,Product_Title)
SELECT
amp.brand,
amp.product,
amp.Status,
amp.old_Price,
amp.Current_Price,
Product_Title

FROM results.amp;

COMMIT;

我预计每分钟此查询都会删除dashboard.monitored的当前值,并从results.amp插入信息,但除了事件中的整个查询之外,不会发生任何事情。

正如您所观察到的,事件只包含启动事务的代码;(将在您的系统上永远运行,直到您删除或禁用)。该代码似乎只运行了一次,但这只是因为它已通过与存储例程一样,您可以在DO子句中使用复合语句语法,方法是在本例中使用BEGIN和END关键字“()

delimiter $$
CREATE EVENT IF NOT EXISTS monitored_15min
ON SCHEDULE EVERY 1 MINUTE
STARTS CURRENT_TIMESTAMP
DO
begin
START TRANSACTION;

TRUNCATE dashboard.monitored;
INSERT INTO dashboard.monitored (brand,product,Status,old_Price,Current_Price,Product_Title)
SELECT
amp.brand,
amp.product,
amp.Status,
amp.old_Price,
amp.Current_Price,
Product_Title

FROM results.amp;

COMMIT;
end $$
delimiter ;

有关更多信息,请参阅手册,并确保已启用事件计划程序。

因为您已观察到事件仅包含启动事务的代码;(将在您的系统上永远运行,直到您删除或禁用)。该代码似乎只运行了一次,但这只是因为它已通过与存储例程一样,您可以在DO子句中使用复合语句语法,方法是在本例中使用BEGIN和END关键字“()

delimiter $$
CREATE EVENT IF NOT EXISTS monitored_15min
ON SCHEDULE EVERY 1 MINUTE
STARTS CURRENT_TIMESTAMP
DO
begin
START TRANSACTION;

TRUNCATE dashboard.monitored;
INSERT INTO dashboard.monitored (brand,product,Status,old_Price,Current_Price,Product_Title)
SELECT
amp.brand,
amp.product,
amp.Status,
amp.old_Price,
amp.Current_Price,
Product_Title

FROM results.amp;

COMMIT;
end $$
delimiter ;

有关更多信息,请参阅手册,并确保已启用事件计划程序。

Check.Check.Hey p.Salmon,分隔符开关合并所有事务代码,不允许其丢失,这就成功了。此外,活动的开始和结束也是另一个因素。谢谢你帮了我。嘿,p.萨蒙,这个分隔符开关合并了所有的事务代码,不允许它掉入。此外,活动的开始和结束也是另一个因素。谢谢你帮助我。