我有两个SQLite3表,A和B。当AX列更新时,我想修改BY,当BY更新时,我想修改AX
我可以使用两个触发器:
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 中的触发深度?