【发布时间】:2011-12-17 06:08:48
【问题描述】:
如果不允许回滚 TRUNCATE 语句,那么它如何在事务中回滚?考虑以下代码:
USE tempdb
GO
-- Create Test Table
CREATE TABLE TruncateTest (ID INT)
INSERT INTO TruncateTest (ID)
SELECT 1
UNION ALL
SELECT 2
UNION ALL
SELECT 3
GO
-- Check the data before truncate
SELECT * FROM TruncateTest
GO
-- Begin Transaction
BEGIN TRAN
-- Truncate Table
TRUNCATE TABLE TruncateTest
GO
-- Check the data after truncate
SELECT * FROM TruncateTest
GO
-- Rollback Transaction
ROLLBACK TRAN
GO
-- Check the data after Rollback
SELECT * FROM TruncateTest
GO
-- Clean up
DROP TABLE TruncateTest
GO
【问题讨论】:
-
你到底在问什么?在 SQL Server 中,TRUNCATE 是事务性的。你在哪里读到它不是?
-
你有一堆问题已经得到解答,显然对你有帮助,但你还没有accepted them。请做其他人可能不愿意帮助你
-
曾几何时,该问题被标记为oracle 标记以及sql-server 标记。提问几天后,oracle 标签被删除。
标签: sql sql-server