Database 删除数据库用户drop是否会触发用户在其他架构的表上引发的事件?
假设用户USER1在不同的表上创建了触发器,所有这些表都不属于该用户,但这些触发器将数据记录到USER1表中 现在,如果我使用下面的命令删除Oracle中的一个用户,这会删除所有其他触发器吗 SQL>删除用户级联Database 删除数据库用户drop是否会触发用户在其他架构的表上引发的事件?,database,oracle,Database,Oracle,假设用户USER1在不同的表上创建了触发器,所有这些表都不属于该用户,但这些触发器将数据记录到USER1表中 现在,如果我使用下面的命令删除Oracle中的一个用户,这会删除所有其他触发器吗 SQL>删除用户级联 否则,触发器将无法工作,因为它们无法找到要写入的目标表。另外,是否有一种方法可以删除数据库用户引发的所有触发器,而不管它们属于哪个架构?一个简单的测试表明触发器将被删除。我创建了一个新用户TEST2,授予它createanytrigger,然后在PHIL.BIGTABLE上创建了一个触
否则,触发器将无法工作,因为它们无法找到要写入的目标表。另外,是否有一种方法可以删除数据库用户引发的所有触发器,而不管它们属于哪个架构?一个简单的测试表明触发器将被删除。我创建了一个新用户
TEST2
,授予它createanytrigger
,然后在PHIL.BIGTABLE
上创建了一个触发器
PHIL@PHILL11G2 > select count(*) from dba_triggers;
COUNT(*)
----------
617
PHIL@PHILL11G2 > drop user test2 cascade;
User dropped.
PHIL@PHILL11G2 > select count(*) from dba_triggers;
COUNT(*)
----------
616
PHIL@PHILL11G2 >
触发器元数据位于DBA_触发器中,因此删除它们需要:
begin
for x in (
select owner,
trigger_name
from dba_triggers
where ... -- apply predicate to select triggers here)
loop
execute immediate 'drop trigger '||x.owner||'.'||x.trigger_name;
end loop;
end;
/
如果用户被删除,但触发器不存在,谁会拥有它们?