目的:當(dāng)一張表中的數(shù)據(jù)達(dá)到一定條數(shù)時(shí),讓其自動(dòng)刪除本表固定條數(shù)的數(shù)據(jù)。代碼:--建表(就以student表為例)create table student(id int auto_increment primary key,name VARCHAR(20),age int)--觸發(fā)器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;--測(cè)試代碼insert into student(name,age) VALUES('aaa','22');--錯(cuò)誤提示[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貢獻(xiàn)51條經(jīng)驗(yàn) 獲得超16個(gè)贊
mysql當(dāng)前版本 暫時(shí)不支持觸發(fā)器對(duì)本表 進(jìn)行修改操作(update,insert,delete);如果非要對(duì)本表進(jìn)行操作,可以寫event 時(shí)間觸發(fā)器解決。寫event觸發(fā)器前看一下mysql版本:
mysql5.1版本開(kāi)始引進(jìn)event概念。event既“時(shí)間觸發(fā)器”,與triggers的事件觸發(fā)不同,event類似與linux crontab計(jì)劃任務(wù),用于時(shí)間觸發(fā)。通過(guò)單獨(dú)或調(diào)用存儲(chǔ)過(guò)程使用,在某一特定的時(shí)間點(diǎn),觸發(fā)相關(guān)的SQL語(yǔ)句或存儲(chǔ)過(guò)程。
添加回答
舉報(bào)
0/150
提交
取消