作用
使用TRUNCATE TABLE语句可以删除表中的所有行。默认情况下,Oracle数据库还会执行以下操作:
注意:无法回滚TRUNCATE TABLE语句,也不能使用FLASHBACK TABLE语句检索到被截断表的数据。
使用TRUNCATE TABLE语句删除行比删除并重建表更高效。删除并重建表会使依赖该表的对象变得无效,需要重新授予该表上的对象权限,并且需要重新创建该表的索引、完整性约束以及触发器,以及为它重新指定存储参数。截断表没有这些影响。
使用TRUNCATE TABLE语句删除行比使用DELETE语句删除所有行更快,尤其是存在多个触发器、所有以及其他约束的表。
前提条件
要截断一个表,该表必须位于当前用户的模式中,或者拥有DROP ANY TABLE系统权限。
语法
truncate_table::=
语义
TABLE从句
指定要截断的表的模式和名称。该表不能是簇表的一部分。如果忽略schema,假设该表位于当前模式。
注释:截断表时,Oracle自动删除表的索引数据和与表关联的物化视图的直接路径INSERT信息。这个信息与任何的物化视图日志无关。如果删除了直接路径INSERT信息,物化视图的增量刷新可能丢失数据。
截断表的限制
该语句存在以下限制:
MATERIALIZED VIEW LOG从句
4
STORAGE从句
6
7
示例
示例一:截断表
以下语句删除
1
示例二:阶段后保留物化视图日志
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24945919/viewspace-768116/ ,如需转载,请注明出处,否则将追究法律责任。