对于学校作业,我们需要将MySQL表中的行数保持在100以下。新的行必须留着。我试过用扳机,但没有成功。
CREATE TRIGGER delete_rows
AFTER INSERT ON `check`.log
FOR EACH ROW
BEGIN
IF(SELECT COUNT(*) FROM `check`.log)>100
THEN
DELETE FROM `check`.log LIMIT 1;
END IF;
END这导致以下错误:
错误1442 (HY000):无法更新存储函数/触发器中的表“日志”,因为调用此存储函数/触发器的语句已经使用了它。
然后,我尝试用/var/lib/mysql/check/log.ibd监视incron,让它执行一个脚本。当我用nano打开log.ibd时,incron会执行我的脚本,但是当我使用MySQL向它插入一些东西时,什么都不会发生。
指令集:
/var/lib/mysql/check/log.ibd IN_ALL_EVENTS /etc/scripts/test如何确保表的行数不超过100行?
发布于 2018-11-19 16:49:13
触发器没有指定要删除的行,而只是将其限制为删除单个记录。您将希望更新触发器以指定要删除的记录,我猜您希望删除最古老的记录。
https://dev.mysql.com/doc/refman/5.6/en/delete.html
限制子句限制可删除的行数。
https://dba.stackexchange.com/questions/222904
复制相似问题