一个Oracle触发器里多个if运行的问题
我写了个触发器,在某条记录更新时,获取到更新的字段名,原始值,新值,存到另一个表里.关键代码如下:IF:NEW.aaa=:OLD.aaaTHEN(aaa是字段名,aaa里...
我写了个触发器, 在某条记录更新时,获取到更新的字段名,原始值,新值, 存到另一个表里.
关键代码如下:
IF :NEW.aaa=:OLD.aaa THEN (aaa是字段名, aaa里会有Null值)
SELECT 1 into tmp0 FROM Table_a; (这句没实际意义 ^_^)
ELSE
INSERT INTO Table_a_change (
id,
name,
oldvalue,
newvalue
)
values(
:OLD.id
'aaa',
:OLD.aaa,
:NEW.aaa
);
END IF;
IF :NEW.bbb=:OLD.bbb THEN (bbb是字段名, bbb里会有Null值)
SELECT 1 into tmp0 FROM Table_a; (这句没实际意义 ^_^)
ELSE
INSERT INTO Table_a_change (
id,
name,
oldvalue,
newvalue
)
values(
:OLD.id
'bbb',
:OLD.bbb,
:NEW.bbb
);
END IF;
问题来了.
如果aaa字段和bbb字段都被更新, 那么这两个if里的insert都能运行,能添加记录. 如果aaa字段没有被更新, 不管bbb字段有没有被更新, 第二个if里的insert不能运行(不知道能不能运行,反正没看到添加的记录). 不知道为什么, 怎么样能让第二个if里的insert也运行呢? 展开
关键代码如下:
IF :NEW.aaa=:OLD.aaa THEN (aaa是字段名, aaa里会有Null值)
SELECT 1 into tmp0 FROM Table_a; (这句没实际意义 ^_^)
ELSE
INSERT INTO Table_a_change (
id,
name,
oldvalue,
newvalue
)
values(
:OLD.id
'aaa',
:OLD.aaa,
:NEW.aaa
);
END IF;
IF :NEW.bbb=:OLD.bbb THEN (bbb是字段名, bbb里会有Null值)
SELECT 1 into tmp0 FROM Table_a; (这句没实际意义 ^_^)
ELSE
INSERT INTO Table_a_change (
id,
name,
oldvalue,
newvalue
)
values(
:OLD.id
'bbb',
:OLD.bbb,
:NEW.bbb
);
END IF;
问题来了.
如果aaa字段和bbb字段都被更新, 那么这两个if里的insert都能运行,能添加记录. 如果aaa字段没有被更新, 不管bbb字段有没有被更新, 第二个if里的insert不能运行(不知道能不能运行,反正没看到添加的记录). 不知道为什么, 怎么样能让第二个if里的insert也运行呢? 展开
若以下回答无法解决问题,邀请你更新回答
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询