Sqlite3 設置插入觸發器


需求: 數據庫中表t_VerifyCsmDetail需要最多保存10W條記錄,超出時刪除最舊的那一條。

思路:設置插入觸發器。插入前先判斷表中記錄總數,如果大於99999條,則刪除最舊的一條記錄。

代碼如下:

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 可省略,具體含義請百度;

when((select COUNT(*) from t_VerifyCsmDetail)>1)表示當總記錄數大於99999條時觸發刪除記錄操作;

語句delete from t_VerifyCsmDetail where LocalNO=(select MIN(LocalNO)from t_VerifyCsmDetail);中,

t_VerifyCsmDetail是表名,LocalNO為其中一個字段的字段名(在我的表中被設置為自增主鍵類型為int),

select MIN(LocalNO) from t_VerifyCsmDetail表示在表中字段LocalNO的最小值,

delete from t_VerifyCsmDetail whereLocalNO=xx;表示刪除此條記錄。

 

注意:如果在begin和end之間有多條SQL語句,則每條語句必須用分號隔開;end后面無需分號。

        另外,一定要確保sqlite3已經被完整的移植到linux下。

我之所以剛剛開始觸發器設置不成功,就是因為sqlite3靜態庫libsqlite3.so.0和執行sqlite3 的命令文件未放置在/lib和/bin下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM