zoukankan      html  css  js  c++  java
  • 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下。

  • 相关阅读:
    java继承中的初始化顺序
    java可访问修饰符
    java简单数据类型转化
    java运算符优先级
    面向切面编程的例子
    什么是面向切面编程
    return 的使用
    通过修改my.ini配置文件来解决MySQL 5.6 内存占用过高的问题
    spring 注入使用注解(不用xml)
    spring在扫描包中的注解类时出现Failed to read candidate component错误
  • 原文地址:https://www.cnblogs.com/envoy/p/4751140.html
Copyright © 2011-2022 走看看