可以在 SQLite 上创建一个“复杂”触发器吗?对于复杂的,我的意思是触发器主体应该提供对表中的行进行计数,然后如果计数大于固定值,则删除一些行以满足 previuos 条件
问问题
362 次
2 回答
0
假设这ID
是一个自动递增列,以下查询将找到那些具有 100 个最高ID
值的记录,即那些不应该被删除的记录:
SELECT *
FROM MyTable
ORDER BY ID DESC
LIMIT 100
这允许编写以下触发器:
CREATE TRIGGER DeleteOldestMoreThan100
AFTER INSERT ON MyTable
-- WHEN (SELECT COUNT(*) FROM MyTable) > 100 -- not needed
BEGIN
DELETE FROM MyTable
WHERE ID NOT IN (SELECT ID
FROM MyTable
ORDER BY ID DESC
LIMIT 100);
END;
于 2013-09-26T16:37:07.513 回答
0
您应该能够使用触发器定义的 WHERE 子句来执行此操作,例如 WHERE count(*>100。然后在触发器的操作部分中,定义一个带有 WHERE 子句的 DELETE 语句,该子句标识您想要的“最旧”条目删除。
于 2013-09-26T16:16:06.437 回答