需求: 數據庫中表t_VerifyCsmDetail須要最多保存10W條記錄,超出時刪除最舊的那一條。linux
思路:設置插入觸發器。插入前先判斷表中記錄總數,若是大於99999條,則刪除最舊的一條記錄。sql
代碼以下:數據庫
create trigger VRF_insert before insert on t_VerifyCsmDetail for each row when((select COUNT(*) fromt_VerifyCsmDetail)>99999) begin delete from t_VerifyCsmDetail where LocalNO=(select MIN(LocalNO) from t_VerifyCsmDetail); end
其中,VRF_insert是觸發器名;before表示在插入以前判斷;for each row 可省略,具體含義請百度;spa
when((select COUNT(*) from t_VerifyCsmDetail)>1)表示當總記錄數大於99999條時觸發刪除記錄操做;code
語句delete from t_VerifyCsmDetail where LocalNO=(select MIN(LocalNO)from t_VerifyCsmDetail);中,sqlite
t_VerifyCsmDetail是表名,LocalNO爲其中一個字段的字段名(在個人表中被設置爲自增主鍵類型爲int),blog
select MIN(LocalNO) from t_VerifyCsmDetail表示在表中字段LocalNO的最小值,it
delete from t_VerifyCsmDetail whereLocalNO=xx;表示刪除此條記錄。class
注意:若是在begin和end之間有多條SQL語句,則每條語句必須用分號隔開;end後面無需分號。百度
另外,必定要確保sqlite3已經被完整的移植到linux下。
我之因此剛剛開始觸發器設置不成功,就是由於sqlite3靜態庫libsqlite3.so.0和執行sqlite3 的命令文件未放置在/lib和/bin下。