DROP触发器仅在存在时触发(ORACLE)

时间:2015-12-08 08:45:59

标签: oracle oracle11g triggers

我想放弃 ORACLE 中的现有触发器。

我确实知道 oracle 中触发器的drop查询。但是想知道如何检查 Oracle DB 中是否已存在该触发器。

DROP查询:

DROP TRIGGER **TRIGGER_NAME**

2 个答案:

答案 0 :(得分:4)

您需要一个带有动态SQL的PL / SQL块:

-- drop the trigger if it exists
declare 
  l_count integer;
begin

  select count(*)
    into l_count
  from user_triggers
  where trigger_name = 'TRIGGER_NAME';

  if l_count > 0 then 
     execute immediate 'drop trigger trigger_name';
  end if;

end;
/


-- now create the trigger    
create trigger trigger_name
   ..
begin
end;
/

请注意,(未引用的)标识符以大写形式存储在Oracle系统目录中。因此,请确保在PL / SQL检查中使用trigger_name = 'TRIGGER_NAME',而不是trigger_name = 'trigger_name'

答案 1 :(得分:-1)

您有两个选择:

1)检查是否存在触发器

SELECT * 
  FROM user_triggers
 WHERE trigger_name = '...'

2)DROP触发并检查EXCEPTION