許多人以為 TRUNCATE TABLE 不可回滾。實則:**在明確交易中執行 TRUNCATE 可回滾**;若無交易包裹,則立即認可且無法從記錄檔還原 (僅記錄頁面配置解除配置)。
USE temp_test_database; GO
CREATE TABLE TruncateTabel (ID INT);
INSERT TruncateTabel VALUES (1),(2),(3); GO
-- 確認資料
SELECT * FROM TruncateTabel; -- 3 列

-- 開始交易並 TRUNCATE
BEGIN TRAN;
TRUNCATE TABLE TruncateTabel; GO
-- 回滾前檢查 → 0 列
SELECT * FROM TruncateTabel; GO

-- 回滾交易
ROLLBACK TRAN; GO
-- 回滾後檢查 → 3 列恢復
SELECT * FROM TruncateTabel; GO

BEGIN TRAN; TRUNCATE TABLE ...; COMMIT/ROLLBACK 是高效選擇 (比 DELETE 少記錄、不觸發 Trigger、重設 Identity)。