我正在编写一个触发器,它将触发更新并插入一个表并插入另一个表。触发器看起来像这样。
create or replace trigger update_test_history
before insert or update on demo.test_req REFERENCING NEW AS NEW OLD AS old
for each row
declare
v_count number(1);
begin
if :old.quote_request_id != null then
--Update History table
insert into demo.test_req_history
(history_id,
req_id)
values
(isisdba.req_hist_seq.nextval,
:old.req_id);
end if;
end update_test_history;
此触发器不适用于DML。但是,如果我删除if条件,那么它开始工作。 有人可以告诉我这是错的吗? 提前致谢。
答案 0 :(得分:1)
null
永远不会等于任何值,包括null
。 null
也永远不会与包括null
在内的其他值不相等。声明
if( <<some expression>> != null )
then
<<do something>>
end if;
将进入<<do something>>
区块。
if( <<some expression>> = null )
then
<<do something>>
end if;
您必须使用三元逻辑来处理null
值is null
或is not null
。看起来你可能想要
if( :old.quote_request_id is not null )
the
<<do something>>
end if;