layer
在 SQLite 中,我有一个名为columns的树形结构表(id, ..., parentId)
。和一个普通的表称为dir
列(id, ..., modifiedTime)
。情况是:
一旦使用新的 modifiedTime 更新了某些行,dir
它们的所有父级也应该更新。保证 modifiedTime 不减少。
如果没有触发器,我可以使用此 sql 来执行此操作(通过使用 WITH RECURSIVE 子句):
WITH RECURSIVE P(id) AS (
SELECT parentId FROM layer WHERE id="The Id of Modified Row"
UNION ALL
SELECT L.parentId FROM layer AS L, P WHERE L.id=P.id)
UPDATE dir SET modifiedT=CURRENT_TIMESTAMP WHERE id IN P;
但是当我将 sql 放入触发器时,UPDATE 语句会出错。阅读SQLite 官方文档后,我明白了The WITH clause cannot be used within a CREATE TRIGGER.
这就是问题
我怎样才能让触发器做我想做的事?
换句话说,如何替换触发器中的“WITH”子句?