我成功使用以下BEFORE INSERT
触发器来限制存储在SQLite数据库表 位置中 的行数。数据库表充当Android应用程序中的缓存。
CREATE TRIGGER 'trigger_locations_insert'
BEFORE INSERT ON 'locations'
WHEN ( SELECT count(*) FROM 'locations' ) > '100'
BEGIN
DELETE FROM 'locations' WHERE '_id' NOT IN
(
SELECT '_id' FROM 'locations' ORDER BY 'modified_at' DESC LIMIT '100'
);
END
同时,我添加了第二个触发器,使我可以INSERT OR UPDATE
行。-关于该主题的讨论可以在另一个主题中找到。第二个触发器需要一个VIEW
在其INSERT
上执行的触发器。
CREATE VIEW 'locations_view' AS SELECT * FROM 'locations';
由于INSERT
不再在TABLE
位置 上执行,而是在VIEW
locations_view
上执行,因此上述触发器不再起作用。如果我将触发器应用于VIEW
以下错误消息。
Failure 1 (cannot create BEFORE trigger on view: main.locations_view)
问题:
如何更改上述触发器以INSERT
在VIEW
-上观察每个触发器,或者您是否建议另一种限制行数的方法?我宁愿在数据库中处理这种操作,而不是在客户端上运行前端代码。
性能问题:
虽然,限制器(上面的触发器)总体上起作用-它的性能低于最佳效果!实际上,数据库操作花费了很长时间,因此引发了ANR。据我所看到的,其原因是,该限制器被称为
每
一个时间INSERT
发生。为了优化设置,INSERT
应将大宗交易包装成一个事务,然后限制器应立即执行。这可能吗?如果您想提供帮助,请将有关批量的优化注释INSERT
放入原始问题中。欢迎在此发表有关限幅器的评论。
这种触发器应与其他触发器一起正常工作。问题似乎是SQL不必要地引用了该_id
字段。它为每一行选择文字字符串“
_id”,并将其与相同的文字字符串进行比较。
删除引号'_id'
(DELETE
和子引号中SELECT
)都可以解决此问题。
本文向大家介绍sqlite时间戳转时间语句(时间转时间戳),包括了sqlite时间戳转时间语句(时间转时间戳)的使用技巧和注意事项,需要的朋友参考一下 下面是具体的实现代码:
问题内容: 如何从MongoDB集合中的时间(HH:MM:SS.Milisecond)值大于零的日期字段中选择记录,并通过保持日期的时间(HH:MM:SS)值为零来更新记录值是否与Python脚本中的现有值相同? 当前数据如下所示- 如何在Python脚本中仅选择第4、5、6和7行,并使用时间戳将其更新为零? 更新后,数据如下所示- 问题答案: 最好的方式来更新您的文件,并在时间使用日期时间模块,
问题内容: 有些sql写得不好。有时,搜索需要花费数小时的申请时间。当一个应用程序(可能是一个网站)提交运行时间很长的查询时,我必须重新启动mysql。如何在数据库端限制sql查询的执行时间? 问题答案: 要在很长的执行时间后自动终止MySQL中的查询,请执行以下操作: 创建一个存储过程为: 然后在curosr的循环中执行以下操作: 创建,只是里面的上述步骤。 注意:KILL QUERY只是杀死查
说明 pika新版binlog有时间戳,开发binlog_sender工具,根据输入的时间段回放对应数据到某个pika实例 工具目录: pika/tools/binlog_tools/binlog_sender 使用参数: -h -- 显示帮助 -t -- l 显示日志类型,old 或new -i -- pika实例的ip -p -- pika实例的port -n -- 输入的binlog的路径
问题内容: 我想在docker容器中运行命令。如果该命令花费了3秒钟以上的时间,则应删除该容器。 我以为可以通过使用中的option 来实现此目标。 但是我的命令似乎出了点问题。 例如,命令创建一个持续3秒以上的Docker容器。第三秒后,容器不会停止或删除。 我是否误解了? 该文件说: 停止容器的超时时间(以秒为单位) 这是我的Docker版本: API版本比1.25更新。 问题答案: 该选项是
问题内容: 我刚刚发现,运行日历脚本时,PHP中的时间戳限制为2038。这实际上是什么意思?为什么是2038,而不是2050或2039?如果时间戳仅是从给定日期(1970年)起算的秒数,为什么还要设置限制? 问题答案: 该限制是由大多数C库用来表示该计数的4字节带符号整数强加的。快速数学(假设365天年,并非完全正确): 这也意味着下限约为1900。一些库已经开始引入64位纪元计数,但目前它们之间