Database 删除数据库用户drop是否会触发用户在其他架构的表上引发的事件?

Database 删除数据库用户drop是否会触发用户在其他架构的表上引发的事件?,database,oracle,Database,Oracle,假设用户USER1在不同的表上创建了触发器,所有这些表都不属于该用户,但这些触发器将数据记录到USER1表中 现在,如果我使用下面的命令删除Oracle中的一个用户,这会删除所有其他触发器吗 SQL>删除用户级联 否则,触发器将无法工作,因为它们无法找到要写入的目标表。另外,是否有一种方法可以删除数据库用户引发的所有触发器,而不管它们属于哪个架构?一个简单的测试表明触发器将被删除。我创建了一个新用户TEST2,授予它createanytrigger,然后在PHIL.BIGTABLE上创建了一个触

假设用户USER1在不同的表上创建了触发器,所有这些表都不属于该用户,但这些触发器将数据记录到USER1表中

现在,如果我使用下面的命令删除Oracle中的一个用户,这会删除所有其他触发器吗

SQL>删除用户级联


否则,触发器将无法工作,因为它们无法找到要写入的目标表。另外,是否有一种方法可以删除数据库用户引发的所有触发器,而不管它们属于哪个架构?

一个简单的测试表明触发器将被删除。我创建了一个新用户
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;
/

如果用户被删除,但触发器不存在,谁会拥有它们?