提问人:anzedolenc 提问时间:2/23/2023 更新时间:2/23/2023 访问量:34
创建 mysql 事件时出现问题。启动事务错误 [重复]
Problem with creating mysql event. Start transaction error [duplicate]
问:
我该如何创建一个事件,删除早于 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;
我尝试删除启动事务并删除,但后来我在提交时出现错误,但它是一个事务非常重要
答:
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。
上一个:了解 SQL 事务处理
评论