1 drop table时,相关约束被删除

 如图,经过drop table操作后已找不到相关的constraint

 Oracle drop table

    Oracle drop table

 

2 drop table时,对相关对象的影响

如图,index是在tb1上建立的,view和synonym也是基于tb1建立的

Oracle drop table

(注意这里因为tb1是从recylebin里flashback回来的,因此index的命名由系统自动命名为这种形式)

 

drop table操作后,可以看到index跟着table一起被删除,但是viewsynonym这两个对象还存在

Oracle drop table

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

Oracle drop table

Oracle drop table

 

3 drop table 对触发器的影响

   建立一个触发器 tgr_tb1,当tb1表中的数据被删除时,往dt_tb1中插入当前sysdate,

   drop table后,tgr_tb1是否还存在?通过drop table的方式,会跟delete from一样触发tgr_tb1吗?

   Oracle drop table

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

   Oracle drop table

 

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

Oracle drop table

 

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

Oracle drop table

验证触发器功能正常

Oracle drop table

 

总结:drop table操作相关影响:

删除所有约束,flashback table后恢复约束;

删除index、trigger,flashback table后恢复,但名称由系统定义,不再沿用用户自定义名称 ;

不删除view、synonym的定义,但是都会失效;

不触发delete类trigger,尽管表数据被删除;

 

 

以上为个人学习总结,将持续更新

对Oracle有兴趣的朋友可以加微信qq918858589

有学习资料和工作经验可供交流,谢谢

 

相关文章: