为了账号安全,请及时绑定邮箱和手机立即绑定

insert触发器如何对本表进行删除操作?

insert触发器如何对本表进行删除操作?

雪舞蔷薇 2016-12-19 09:35:18
目的:当一张表中的数据达到一定条数时,让其自动删除本表固定条数的数据。代码:--建表(就以student表为例)create table student(id int auto_increment primary key,name VARCHAR(20),age int)--触发器CREATE TRIGGER tri_studentAFTER INSERT ON studentFOR EACH ROW BEGIN    declare num INT;    select count(id) INTO num from student;    if num>=20 then         DELETE FROM student WHERE ID>10;    end if;  END;--测试代码insert into student(name,age) VALUES('aaa','22');--错误提示[SQL] insert into student(name,age) VALUES('aaa','22');[Err] 1442 - Can't update table 'student' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
查看完整描述

2 回答

?
雪舞蔷薇

TA贡献51条经验 获得超16个赞

mysql当前版本 暂时不支持触发器对本表 进行修改操作(update,insert,delete);如果非要对本表进行操作,可以写event 时间触发器解决。写event触发器前看一下mysql版本:

mysql5.1版本开始引进event概念。event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发。通过单独或调用存储过程使用,在某一特定的时间点,触发相关的SQL语句或存储过程。

查看完整回答
反对 回复 2016-12-26
?
weenhall

TA贡献121条经验 获得超57个赞

改为语句级别试下

查看完整回答
反对 回复 2016-12-20
  • 2 回答
  • 0 关注
  • 3949 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信