Sqlite3 設置插入觸發器

需求: 數據庫中表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下。

相關文章
相關標籤/搜索