我的数据库中有一个计算,需要在更新触发器之后为“ table1”更新“ field1”。
更新该字段的问题将导致更新后触发器触发并执行冗长的过程并显示错误。
请告知在执行“更新后”触发器之后如何使“ field1”更新,而又不使“更新后”触发器再次执行。
我知道我不能将After触发器与NEW配合使用。
谢谢
可以使用基于上下文变量的自定义锁定机制,以防止重复调用AFTER UPDATE触发器。
CREATE TRIGGER au FOR table AFTER UPDATE POSITION 0 AS BEGIN IF RDB$GET_CONTEXT('USER_TRANSACTION', 'MY_LOCK') IS NULL THEN BEGIN RDB$SET_CONTEXT('USER_TRANSACTION', 'MY_LOCK', 1); ... Do your update operations here ... RDB$SET_CONTEXT('USER_TRANSACTION', 'MY_LOCK', NULL); END WHEN ANY DO BEGIN RDB$SET_CONTEXT('USER_TRANSACTION', 'MY_LOCK', NULL); EXCEPTION; END END