我有一个触发器,它在更新后执行。它不按我想要的那样工作。
如何检查可为空的字段中的值是否发生了变化?我有以下为可空类型的字段:
FRM_DATE DATE
FRM_TIME DATE
THE_DATE DATE
THE_TIME NUMBER(4,2)
THE_BOOL NUMBER(2)
仅在上述字段的值实际发生更改时,我才想执行一组逻辑。如果值相同,那么我不想执行代码。因此,从用户界面说,如果其中一个字段具有值并且用户将其删除(它现在变为NULL)并点击提交按钮,我希望我的逻辑能够执行,因为已经进行了更改。
我尝试了以下操作,但未执行我想要的逻辑:
IF (nvl(:old.FRM_DATE, '') <> nvl(:new.FRM_DATE,'')) THEN
--My logic
END IF;
我也试过了
IF (nvl(:old.FRM_DATE, NULL) <> nvl(:new.FRM_DATE,NULL)) THEN
--My logic
END IF;
有任何想法吗?
亲切的问候,
您不能将null与null进行比较,也不能将null与任何其他值进行比较,将逻辑更改为:
IF (nvl(:old.FRM_DATE, to_date('01-01-1900', 'dd-mm-yyyy')) <> nvl(:new.FRM_DATE,to_date('01-01-1900', 'dd-mm-yyyy'))) THEN
--My logic
END IF;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句