我想要在ORACLE中删除一个已经存在的触发器。
我知道在ORACLE中使用drop
查询可以删除触发器。但我想知道如何检查该触发器是否已经存在于Oracle DB中。
DROP查询:
DROP TRIGGER **TRIGGER_NAME**
-- 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;
/
trigger_name = 'TRIGGER_NAME'
而不是trigger_name = 'trigger_name'
。你有两个选项:
1)检查触发器是否存在
SELECT *
FROM user_triggers
WHERE trigger_name = '...'
2) 删除触发器并检查异常
[user|all|dba]_triggers
。或者,您可以简单地删除触发器并捕获异常。 - Justin Cave