关于MYSQL触发器的使用

gungod 2011-03-16 11:32:01
我写了一个触发器,作用是:
当新数据插入后,只保留改变最近5条记录,其他记录删除:


delimiter //
CREATE TRIGGER tbl1_ai AFTER INSERT ON tbl1
FOR EACH ROW BEGIN

delete from tbl1 where (select count(*) from tbl1 where SingInDateTime >= NEW.SingInDateTime) >5;
END;
delimiter;


当我插入数据,

insert into tbl1 values
(null,now(),'Report','1');


提示错误:
SQL ERROR 1442 : Can't update table 'tbl1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.



在触发器中如何删除本表记录?
还是这个操作不适合用触发器来做呢?
...全文
48 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2011-03-16
  • 打赏
  • 举报
回复
ACMAIN_CHM 2011-03-16
  • 打赏
  • 举报
回复
这是MYSQL的限制,触发器中不可能再对本表进行UPDATE,DELETE操作,以防止递归触发。

如果你只是想减少表中的记录,则建议每天(或者其它间隔)定时清理一下
wwwwb 2011-03-16
  • 打赏
  • 举报
回复
在TRIGGER中不能对本表操作,用其它方式解决吧

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧