sql 基础--触发器,如何限制表最大行数
2017-03-02 13:39
537 查看
参考:http://blog.csdn.net/love_android_2011/article/details/20137385
http://blog.csdn.net/lihuibo128/article/details/43667865
在这里,event_name 可能是INSERT,DELETE和UPDATE操作所提到的表table_name数据库。您可以选择指定FOR EACH ROW表名后。以下是语法上创建一个触发器UPDATE操作一个或多个指定一个表列如下:
http://blog.csdn.net/lihuibo128/article/details/43667865
语法
创建触发器的基本语法如下:CREATE TRIGGER trigger_name [BEFORE|AFTER] event_name ON table_name BEGIN -- Trigger logic goes here.... END;
在这里,event_name 可能是INSERT,DELETE和UPDATE操作所提到的表table_name数据库。您可以选择指定FOR EACH ROW表名后。以下是语法上创建一个触发器UPDATE操作一个或多个指定一个表列如下:
CREATE TRIGGER trigger_name [BEFORE|AFTER] UPDATE OF column_name ON table_name BEGIN -- Trigger logic goes here.... END; 例子:
CREATE TRIGGER delete_till_50 INSERT ON _table WHEN (select count(*) from _table)>50 BEGIN DELETE FROM _table WHERE _table._id IN (SELECT _table._id FROM _table ORDER BY _table._id limit (select count(*) -50 from _table )); END;注意:1.默认是 BEFORE,即在插入时判断执行 左右最终表会有51条数据 2.BEGIN 要与前后与空格所以用ormlite 语句改写为:
// 初次运行程序会执行该onCreate方法,如果不是初次运行程序则不会执行该方法,防止重复建表。 @Override public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) { try { //创建表 TableUtils.createTable(connectionSource, CommentMessageItemBean.class); //设置触发器限制表条数上限 String _table = "tb_comment_message_item"; String _maxrow = 1000 + ""; String deleteTrigger = "CREATE TRIGGER delete_till AFTER INSERT ON " + _table + " WHEN (select count(*) from " + _table + ")>" + _maxrow + " " + "BEGIN " + "DELETE FROM " + _table + " WHERE " + _table + ".id IN (SELECT " + _table + ".id FROM " + _table + " ORDER BY " + _table + ".id limit (select count(*) -"+_maxrow+" from " + _table + " ));" +" "+ "END;"; sqLiteDatabase.execSQL(deleteTrigger); } catch (SQLException e) { e.printStackTrace(); } }
1 String deleteTrigger = "CREATE TRIGGER delete_till AFTER INSERT ON " + _table + " WHEN (select count(*) from " + _table + ")>" + _maxrow + " " + 2 "BEGIN " + 3 "DELETE FROM " + _table + " WHERE " + _table + ".id IN (SELECT " + _table + ".id FROM " + _table + " ORDER BY " + _table + ".id limit (select count(*) -"+_maxrow+" from " + _table + " ));" +" "+ 4 "END;";
相关文章推荐
- SQL 语句 最大长度限制 DB2如何修改最大长度限制
- SQL基础--限制结果集的行数
- 如何正确利用Rownum来限制查询所返回的行数?
- 如何正确利用Rownum来限制查询所返回的行数
- 解决:System.Data.SqlClient.SqlException: 超出了存储过程、函数、触发器或视图的最大嵌套层数(最大层数为 32).
- 如何限制窗体的最大改变量
- 超级简单:在一个TextArea中如何限制行数和字符数
- 如何正确利用Rownum来限制查询所返回的行数?
- 各种数据库返回限制行数SQL语句
- 在各种数据库中如何限制检索行数?
- sql如何取各组中ID最大值-2
- SQL Cookbook:一、检索记录(9)限制返回的行数
- SQL解密破解字节不受限制,适用于SQLSERVER2000存储过程,函数,视图,触发器
- MySQL、Oracle、MS SQLserver限制查询所返回的行数
- 如何正确利用Rownum来限制查询所返回的行数
- 使用T-sql 触发器限制数据库中列中非null行值得唯一性
- 如何正确利用Rownum来限制查询所返回的行数?
- 在编写触发器事件时如何获得当前插入记录的字段值?(MS SQL Server)
- [转] 如何突破Windows系统单进程最大线程数2000的限制
- Flex的NumericStepper控件中如何通过maxChars限制用户可以输入数字最大位数的例子