程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> SqlServer2005 >> SQL Server中TRUNCATE事務回滾操作方法

SQL Server中TRUNCATE事務回滾操作方法

編輯:SqlServer2005

我們一般都認為TRUNCATE是一種不可回滾的操作,它會刪除表中的所有數據以及重置Identity列。

如果你在事務中進行TRUNCATE操作,就能回滾。反之,它就不會從日志文件文件恢復數據。它不會在日志文件中記錄刪除的那些數據,它只在日志中記錄數據頁的單元分配。

下面的例子就能解釋上面的所說的.        

復制代碼 代碼如下:USE temp_test_database
GO
--創建一個臨時表
CREATE TABLE TruncateTabel(ID INT)
INSERT INTO TruncateTabel(ID)
SELECT 1
UNION ALL
SELECT 2
UNION ALL
SELECT 3
GO

復制代碼 代碼如下:--檢查插入的數據
SELECT * FROM TruncateTabel

如圖:

https://www.aspphp.online/shujuku/UploadFiles_3118/201701/2017011117124474.png

開始執行事務

復制代碼 代碼如下:
--開始事務
BEGIN TRAN
TRUNCATE TABLE TruncateTabel
GO
--回滾之前檢查TruncateTable
SELECT * FROM TruncateTabel
GO

F5執行,如圖:

https://www.aspphp.online/shujuku/UploadFiles_3118/201701/2017011117124457.png

執行回滾事務

復制代碼 代碼如下:--回滾事務
ROLLBACK TRAN
GO

再次檢查表TruncateTable

復制代碼 代碼如下:--回滾之後再次檢查TruncateTable
SELECT * FROM TruncateTabel
GO

F5執行,如圖:
https://www.aspphp.online/shujuku/UploadFiles_3118/201701/2017011117124442.png

總結一下,事務是可以對TRUNCATE操作進行回滾的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved