在表1 中,触发器1 插入表3 ,其中触发器3 使用结果表2 中的触发2 。 只有在表2 中的触发器2 之后,Firebird 2.5中是否有办法在表1 中午餐触发1 ? 也许有些“等待触发”?
答案 0 :(得分:1)
不,在Firebird 2.5中,您无法将触发器指定为仅在其他触发器之后运行。
触发器的执行顺序由触发它们的语句的顺序决定,即如果你使用
INSERT INTO table2 ...
INSERT INTO table1 ...
然后ON INSERT
的{{1}}触发器在table2
之前执行。如果table有多个给定类型的触发器,则顺序由触发器声明的table1
子句确定。
如果您不能保证POSITION
语句的顺序,那么您可以使用数据库触发器作为解决方法 - 创建INSERT
触发器,在其中检查您在{{中设置的标志1}}。如果该标志在那里,则执行需要ON TRANSACTION COMMIT
中生成的数据的内容。要设置标记,您可以将RDB$SET_CONTEXT与trigger2
命名空间一起使用。像
trigger2
有关完整的TRIGGER DDL syntax,请参阅Firebirds语言参考。