Oracle delete truncate drop 的区别
1.?delete/truncate?只刪除數據不刪除表,索引的結構。?drop?將刪除表的結構及依賴的?index/constrain/trigger,依賴于該表的?procedure/function?將保留,但是變為?invalid?狀態;
?
2.?delete?是?dml,寫?rollback?segement,可回滾,速度慢,事務提交之后才生效。在?9i?滿足?undo_retention?條件下可使用?flashback。一次性大批量數據的?delete?可能導致回滾段急劇擴展從而影響到數據庫,慎用,觸發?trigger。?truncate/drop?是?ddl,隱式提交,不寫?rollback?segment,不能回滾,速度快。9i?不能使用?flashback,不觸發?trigger;
3.?delete?不影響表所占用的?extent,HWM?保持原位置不動,即使刪除的是最靠近?HWM?的數據。delete?其實也可以釋放空間,但是不降低?HWM,delete?后?block?的空閑空間達到?pct_used,就可以重用。?truncate?缺省情況下將空間(表和索引)釋放到?minextents?個?extent,除非使用?reuse?storage。truncate?會將高水線復位(回到最開始)。?drop?將表所占用的空間全部釋放,segment?不存在,無所謂?HWM?的概念;
Oracle?高水位(HWM)?
http://blog.csdn.net/tianlesoftware/archive/2009/10/22/4707900.aspx?????????
???
4.?truncate/drop?的對象必須是本模式下的,或者被授予?drop?any?table?的權限,但?drop?any?table?權限不能?truncate/drop?sys?的表。?delete?的對象必須是本模式下的,或者被授予?delete?on?SCHEMA.table?或?delete?any?table?的權限,但?delete?any?table?權限不能?delete?sys?的表;
5.?不能?truncate?一個帶有?enable?外鍵的表,不管表里有沒有數據,如果要?truncate,首先要?disable?外鍵或者刪除外鍵(drop?外鍵的表肯定是刪除了外鍵)。不能?drop?一個帶有?enable?外鍵的表,不管表里有沒有數據,如果要?drop,首先要刪除外鍵,或者直接用?drop?table?TABLE_NAME?cascade?constraints;?級聯刪除外鍵。?delete?可以。
?
轉載自網絡
------------------------------------------------------------------------------?
Blog:?http://blog.csdn.net/tianlesoftware?
網上資源:?http://tianlesoftware.download.csdn.net?
相關視頻:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx?
DBA1?群:62697716(滿);?DBA2?群:62697977
??
轉載于:https://www.cnblogs.com/zlja/archive/2010/06/19/2449862.html
總結
以上是生活随笔為你收集整理的Oracle delete truncate drop 的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 老机型能更新鸿蒙,华为和荣耀老机型用户有
- 下一篇: mybatis一对多关联查询_Mybat