Sql-Server
何時更喜歡截斷而不是批量刪除?
當我瀏覽 DBA-Reactions 時,我幾乎了解所有的 .gif,但使用這個我遇到了麻煩:
https://twitter.com/DBAReactions/status/613840893322338304
我的意思是 truncate 顯然不會像批量刪除那樣創建事務日誌,但在某些情況下,您仍然可以確定可以簡單地截斷一個完整的表。除此之外還有其他顧慮嗎?所以基本上我很想了解完全的區別。
在某些情況下,您不能使用 TRUNCATE TABLE 命令,而必須使用 DELETE 命令。
您不能在以下表上使用 TRUNCATE TABLE:
• 由 FOREIGN KEY 約束引用。(您可以截斷具有引用自身的外鍵的表。)
• 參與索引視圖。
• 通過使用事務複製或合併複製發布。
對於具有這些特徵中的一個或多個的表,請改用 DELETE 語句。
TRUNCATE TABLE 無法啟動觸發器,因為該操作不記錄單個行刪除。有關詳細資訊,請參閱創建觸發器 (Transact-SQL)。
MSDN上有一個很好的解釋:
https://msdn.microsoft.com/en-gb/library/ms177570.aspx
另外,請參閱Stack Overflow 上的這個問題,該問題對此主題進行了長時間的討論。