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

目的:

当一张表中的数据达到一定条数时,让其自动删除本表固定条数的数据。

代码:

--建表(就以student表为例)

create table student
(
id int auto_increment primary key,
name VARCHAR(20),
age int
)

--触发器

CREATE TRIGGER tri_student
AFTER INSERT
ON student
FOR 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.

雪舞蔷薇
浏览 3951回答 2
2回答

雪舞蔷薇

mysql当前版本 暂时不支持触发器对本表 进行修改操作(update,insert,delete);如果非要对本表进行操作,可以写event 时间触发器解决。写event触发器前看一下mysql版本:mysql5.1版本开始引进event概念。event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发。通过单独或调用存储过程使用,在某一特定的时间点,触发相关的SQL语句或存储过程。

weenhall

改为语句级别试下
打开App,查看更多内容
随时随地看视频慕课网APP