IS NULL检查列未执行

时间:2013-04-22 10:18:08

标签: sql oracle triggers oracle10g

我有以下触发器:

CREATE OR REPLACE TRIGGER test 
  AFTER INSERT OR UPDATE ON table_cust 
  FOR EACH row 
BEGIN
   IF(:NEW.visibility_flag='True') THEN
      --Do something
   END IF;      

   IF(:NEW.visibility_flag is null) THEN
      --do something
   END IF;
END test;

每次检查IS NULL条件时,我的触发器都不会执行。如果删除了空检查,则执行。我做错了什么?

1 个答案:

答案 0 :(得分:0)

我认为你删除了“is null”部分,那么你只有IF(:NEW.visibility_flag) - >就像上面的那样(if(expression ='True') - 在下面的例子中你可以看到只输入一个IF语句:

CREATE OR REPLACE TRIGGER test 
  AFTER INSERT OR UPDATE ON table_cust 
  FOR EACH row 
BEGIN
   IF(:NEW.visibility_flag='True') THEN
      --Do something
   ELSE IF(NVL(:NEW.visibility_flag, '0') = '0') THEN
      --do something
   END IF;
END test;