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