熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle中truncate與delete的區別

2013-11-13 15:56:19  來源: Oracle 

  區別

  在功能上truncate是清空一個表的內容它相當於delete from table_name

  delete是dml操作truncate是ddl操作因此用delete刪除整個表的數據時會產生大量的roolback占用很多的rollback segments 而truncate不會

  在內存中用delete刪除數據表空間中其被刪除數據的表占用的空間還在便於以後的使用另外它是假相的刪除相當於windows中用delete刪除數據是把數據放到回收站中還可以恢復當然如果這個時候重新啟動系統(OS或者RDBMS)它也就不能恢復了!

  而用truncate清除數據內存中表空間中其被刪除數據的表占用的空間會被立即釋放相當於windows中用shift+delete刪除數據不能夠恢復!

  truncate 調整high water mark 而delete不truncate之後TABLE的HWM退回到 INITIAL和NEXT的位置(默認)delete 則不可以

  truncate 只能對TABLEdelete 可以是tableviewsynonym

  TRUNCATE TABLE 的對象必須是本模式下的或者有drop any table的權限 而 DELETE 則是對象必須是本模式下的或被授予 DELETE ON SCHEMATABLE 或DELETE ANY TABLE的權限

  在外層中truncate或者delete後其占用的空間都將釋放

  truncate和delete只刪除數據而drop則刪除整個表(結構和數據)


From:http://tw.wingwit.com/Article/program/Oracle/201311/17545.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.