首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >添加新行时删除旧行,并且有超过100行

添加新行时删除旧行,并且有超过100行
EN

Database Administration用户
提问于 2018-11-19 16:44:10
回答 1查看 2.3K关注 0票数 1

对于学校作业,我们需要将MySQL表中的行数保持在100以下。新的行必须留着。我试过用扳机,但没有成功。

代码语言:javascript
复制
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向它插入一些东西时,什么都不会发生。

指令集:

代码语言:javascript
复制
/var/lib/mysql/check/log.ibd IN_ALL_EVENTS /etc/scripts/test

如何确保表的行数不超过100行?

EN

回答 1

Database Administration用户

发布于 2018-11-19 16:49:13

触发器没有指定要删除的行,而只是将其限制为删除单个记录。您将希望更新触发器以指定要删除的记录,我猜您希望删除最古老的记录。

https://dev.mysql.com/doc/refman/5.6/en/delete.html

限制子句限制可删除的行数。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/222904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档