需求: 数据库中表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下。