我必须将表记录限制为 25。在我删除所有内容之后(将来将修改它以仅删除最旧的行)
DELIMITER //
CREATE PROCEDURE p1 () delete FROM tests;//
CREATE TRIGGER trigger1
BEFORE INSERT
ON tests
FOR EACH ROW
BEGIN
SELECT COUNT(*) INTO @cnt FROM tests;
IF @cnt >= 25 THEN
CALL p1();
END IF;
END
//
DELIMITER ;
,但我收到错误: 无法更新存储函数/触发器中的表“tests”,因为它已被调用此存储函数/触发器的语句使用
所以我无法添加更多字段。
最佳答案
MySQL触发器常见问题解答说您无法修改调用触发器的表。
但是您可以在 MySQL 中设置一个 cron 作业或 CREATE EVENT
来定期清理表。 (CREATE EVENT需要PROCESS权限和正在运行的event_scheduler。event_scheduler默认关闭:可以从SQL控制台打开它,但必须修改MySQL配置以确保它在MySQL重新启动时启动。)
关于mysql 存储过程出现故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21265173/