gpt4 book ai didi

sql - firebird - 插入或更新触发器后

转载 作者:行者123 更新时间:2023-12-01 11:53:30 24 4
gpt4 key购买 nike

我的数据库中有一个计算需要在更新触发器后为“table1”更新“field1”。

更新该字段会导致更新后触发器触发并执行冗长的过程并显示错误的问题。

请告知如何在执行“更新后”触发器后更新“字段1”,而不使“更新后”触发器再次执行。

我知道我不能将 NEW 与 After 触发器一起使用。

谢谢

最佳答案

可以使用基于上下文变量的自定义锁定机制,以防止重复调用 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

关于sql - firebird - 插入或更新触发器后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9287132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com