欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

SQLite3 设置插入触发器

程序员文章站 2022-04-29 20:00:30
...

需求: 数据库中表t_VerifyCsmDetail需要最多保存10W条记录,超出时删除最旧的那一条。思路:设置插入触发器。插入前先判断表中记

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

SQLite3中存储类型和数据类型结合文档解析

SQLite3 安装、基本操作

Ubuntu 12.04下SQLite数据库简单应用

Ubuntu 12.04下安装 SQLite及其使用方法

SQLite 数据库入门基础教程

SQLite 的详细介绍:请点这里
SQLite 的下载地址:请点这里

本文永久更新链接地址