gpt4 book ai didi

需要 MySQl 触发器帮助

转载 作者:行者123 更新时间:2023-11-29 14:57:07 25 4
gpt4 key购买 nike

使用 MySQL 5.1.36,我正在尝试编写从“scratch”数据库中删除临时表的触发器。

CREATE DEFINER=`root`@`localhost` TRIGGER 
`jobq`.`DropScratch`
BEFORE DELETE ON jobq.jobq FOR EACH ROW
BEGIN
DECLARE tblname VARCHAR(128);
set tblname=concat('scratch.',OLD.jobname);
DROP TABLE IF EXISTS tblname;
END;

我总是收到错误:

Explicit or implicit commit is not allowed in stored function or trigger.

我能以某种方式克服这个限制吗?

先谢谢你了
阿曼

最佳答案

这里的主要问题是不允许您删除触发器内的表。这就是错误消息显示不允许“隐式提交”时出现的情况。删除表执行隐式提交。

因此,您需要找出除触发器之外的其他方法来执行此操作。一种方法是设置一个 cron 作业,将 information_schema.tables 中的数据与 jobq 表进行比较,以查找临时数据库中可以删除的表,然后删除它们。

我还应该指出,您尝试动态创建删除表语句的方式将不起作用。这将删除一个字面名称为“tblname”的表,而不是“scratch.jobname”。如果要动态删除表,则需要使用单独的脚本语言(例如 python、perl、shell 等)构建删除表语句。

祝你好运!

关于需要 MySQl 触发器帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4313755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com