创建 mysql 事件时出现问题。启动事务错误 [重复]

Problem with creating mysql event. Start transaction error [duplicate]

提问人:anzedolenc 提问时间:2/23/2023 更新时间:2/23/2023 访问量:34

问:

我该如何创建一个事件,删除早于 15 减去的表的行,并将其值加回其他表。在下面的代码中,mysql说我在第5行有一个语法错误

CREATE EVENT add_reserve_to_store_products_and_delete_reservations
ON SCHEDULE EVERY 15 MINUTE
DO
BEGIN
 START TRANSACTION;
 UPDATE zaloga z JOIN ( 
SELECT ID_skladisca, ID_izdelek, SUM(kolicina) AS reserve_sum
FROM reserve WHERE time <= NOW() - INTERVAL 15 MINUTE
GROUP BY ID_skladisca, ID_izdelek
) r ON z.ID_izdelek = r.ID_izdelek AND z.ID_skladisca = r.ID_skladisca
SET z.kolicina = z.kolicina + r.reserve_sum;
DELETE FROM reserve WHERE time <= NOW() - INTERVAL 15 MINUTE;
COMMIT;
END;

我尝试删除启动事务并删除,但后来我在提交时出现错误,但它是一个事务非常重要

mysql sql 语法 sqltransaction mysql-event

评论

0赞 Bill Karwin 2/23/2023
在定义事件时是否设置了分隔符?阅读 dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html

答:

1赞 Bill Karwin 2/23/2023 #1

如果 CREATE EVENT 包含复合语句(即任何带有 BEGIN...END 块),则语句之间的分号相对于整个 CREATE 事件末尾的分号是模棱两可的。您需要在 MySQL 客户端中更改 DELIMITER 来定义此类存储例程。

这与其他存储例程(如过程、函数和触发器)相同。有关更多说明和示例,请参阅 https://dev.mysql.com/doc/refman/8.0/en/stored-programs-defining.html