Oracle触发器的作用表(on table)会随着表名的修改而自动改变吗?

Oracle触发器的作用表(on table)会随着表名的修改而自动改变吗?

不会
你改了表名之后,对应的触发器、视图,全都不会自动变,都会报错,你需要一个一个的改过来

不会改变,比如绑定的是a表,把表命名为b表,那么触发器还是找的a表,并不会找b表,需要手动更改的

跟着触发器的on table 指定的表名,会跟着表名rename一起变的,这个其实简单测试一下就知道了

SQL> create table test_aaa(a number);

Table created


SQL> 
SQL> create or replace trigger TEST_AAA_TRI
  2    before insert or update or delete
  3    on TEST_AAA
  4    for each row
  5  declare
  6  begin
  7    null;
  8  end TEST_AAA_TRI;
  9  /

Trigger created


SQL> select TABLE_NAME from dba_triggers where trigger_name ='TEST_AAA_TRI';

TABLE_NAME
--------------------------------------------------------------------------------
TEST_AAA

SQL> alter table test_aaa rename to test_bbb;

Table altered


SQL> select TABLE_NAME from dba_triggers where trigger_name ='TEST_AAA_TRI';

TABLE_NAME
--------------------------------------------------------------------------------
TEST_BBB

SQL> 

img

会也不会,如果只写表名,那修改表名之后触发器也要修改。
但如果写的模式名+表名就不会
比如"on abc_table" 和 "on csdn.abc_table",后者就不会失效