1 drop table时,相关约束被删除
如图,经过drop table操作后已找不到相关的constraint


2 drop table时,对相关对象的影响
如图,index是在tb1上建立的,view和synonym也是基于tb1建立的

(注意这里因为tb1是从recylebin里flashback回来的,因此index的命名由系统自动命名为这种形式)
drop table操作后,可以看到index跟着table一起被删除,但是view和synonym这两个对象还存在

但是查询这个view和synonym,发现这连个对象已经失效了,因为这两个对象实质上都是通过访问tb1存在的


3 drop table 对触发器的影响
建立一个触发器 tgr_tb1,当tb1表中的数据被删除时,往dt_tb1中插入当前sysdate,
drop table后,tgr_tb1是否还存在?通过drop table的方式,会跟delete from一样触发tgr_tb1吗?

先delete from tb1 验证 tgr_tb1功能正常,删除了tb1中一行后,在dt_tb1中插入了当前系统时间

当执行drop table tb1后,发现trg_tb1不会触发,而且被删除了

通过flashback将tb1闪回后,发现触发器也恢复了,但是trigger_name已经被系统更改,不再是trg_tb1

验证触发器功能正常

总结:drop table操作相关影响:
删除所有约束,flashback table后恢复约束;
删除index、trigger,flashback table后恢复,但名称由系统定义,不再沿用用户自定义名称 ;
不删除view、synonym的定义,但是都会失效;
不触发delete类trigger,尽管表数据被删除;

Oracle的drop table操作不仅删除表,还会移除表上的约束、索引和触发器。视图和同义词虽然保留定义,但会失效。触发器在drop操作后不会触发,并且无法通过flashback恢复其原始名称。
5558

被折叠的 条评论
为什么被折叠?



