我在 SQLite 数据库中有一个表“log”,我在其中写入了所有日志文件。
但是我想假装数据库不会变大 - 最聪明的方法是在插入命令上使用触发器 - 至少我这么认为......
插入新记录时,将触发触发器,删除所有超过 10 天的记录。
或者...
插入新记录时,将触发触发器,删除所有超过特定数量(例如 1000)的旧记录。
我需要一个示例代码。
亲切的问候,谢谢。
最佳答案
这将创建一个插入触发器,该触发器将删除创建日期超过 10 天的所有内容。
CREATE TRIGGER [TRIGGER_NAME] AFTER INSERT ON my_table
BEGIN
DELETE FROM LOG WHERE DATE(CREATE_DATE) > DATE('now', '-10 days');
END
如果您想根据大小做一些事情,就像您所说的 1000 行,您可以这样做。
CREATE TRIGGER [TRIGGER_NAME] AFTER INSERT ON my_table
BEGIN
DELETE FROM LOG WHERE ROW_NO NOT IN
(SELECT TOP 1000 ROW_NO FROM LOG ORDER BY CREATE_DATE DESC);
END
这将选择 1000 个最新的行并删除不在该选择语句中的任何内容。
关于sql - 为 SQLite 创建触发器,当插入新记录时,删除旧记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21235706/