0
我有兩個SQLite3表,A和B.當列A.X更新時,我想修改B.Y,並且當B.Y更新時,我想修改A.X.如何輕鬆檢測sqlite3中的觸發深度?
我可以用兩個觸發器:
CREATE TRIGGER AtoB AFTER UPDATE OF X ON A BEGIN UPDATE B SET Y = ...
和
CREATE TRIGGER BtoA AFTER UPDATE OF Y ON B BEGIN UPDATE A SET X = ...
但似乎這兩個觸發器調用一次,無論我修改的表,即人們總是調用其他。
我只希望其中的一個執行,因爲更新在A到B的方向上是有損的。我不想在B的反方向上損失A,但是如果兩個觸發器都觸發,那麼它會使它在兩個方向都是有損的。
一個簡單的解決方案是實現三個UDF「increment_trigger_depth」,「decrement_trigger_depth」和「get_trigger_depth」,然後在更新語句中使用「WHEN trigger_depth == 1」。但是,是否有更簡單的方法來確定SQLite3中的觸發深度?
聽起來像...一個過於複雜的觸發設置: - / – 2012-06-26 00:11:21