截斷

TRUNCATE 是一種 DDL(資料定義語言)命令,因此它與 DELETE(資料操作語言,DML,命令)之間存在顯著差異。雖然 TRUNCATE 可以快速從資料庫中刪除大量記錄,但應該理解這些差異,以便確定在你的特定情況下使用 TRUNCATE 命令是否合適。

  • TRUNCATE 是資料頁操作。因此,執行 TRUNCATE 操作時,不會觸發與表關聯的 DML 觸發器(ON DELETE)。雖然這將為大量刪除操作節省大量時間,但你可能需要手動刪除相關資料。
  • TRUNCATE 將釋放已刪除行使用的磁碟空間,DELETE 將釋放空間
  • 如果要截斷的表使用標識列(MS SQL Server),則 TRUNCATE 命令將重置種子。這可能導致參考完整性問題
  • 根據現有的安全形色和正在使用的 SQL 的變體,你可能沒有執行 TRUNCATE 命令所需的許可權