layer
SQLite には、 with columnsというツリー構造のテーブルがあります(id, ..., parentId)
。dir
そして、列で呼び出される通常のテーブル(id, ..., modifiedTime)
。状況は次のとおりです。
のいくつかの行dir
が新しい modifiedTime で更新されると、それらのすべての親も更新される必要があります。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」句を置き換える方法は?