假设我们有一个名为Foo的触发器。
Foo取决于T表,取决于a,b,c列。
如果T表被删除,T触发器也会被删除?
如果c被删除,T触发器是否会被丢弃?
如果T表发生了变更,但它不影响a,b,c列,T触发器是否会被丢弃?
提前感谢您的回答,
祝你好运, Lajos Arpad。
答案 0 :(得分:3)
刚试过,我可以回答你的三个问题:
BEFORE INSERT
触发器并且您INSERT
进入表中),则会得到ORA-04098'触发器XYZ无效且重新验证失败'错误答案 1 :(得分:1)
在没有显式
的情况下删除触发器的唯一情况DROP TRIGGER <trigger_name>;
表格何时也被删除。
DROP <TABLE_NAME>;
如果触发器的源代码引用不再存在的架构,则触发器将变为无效。您可以使用以下命令查询数据库中的无效对象:
select * from user_objects where status != 'VALID'
-- invalid objects associated with the user you are logged in as
select * from all_objects where status != 'VALID'
-- all invalid objects in the database
当您指定级联时,有一种情况是“级联”。但这主要是放弃子表。
drop table <table_name> cascade constraints;
关于DROP TABLE DDL命令的Oracle 10g文档。
所有这些触发器经常被滥用并引入错误。我鼓励你避免将应用程序逻辑放在其中。
答案 2 :(得分:0)
您应该尝试这个或咨询Oracle文档/支持。我现在无法访问Oracle数据库(这是周末;-))来验证它,但据我记得,这些操作的结果如下: