2016-05-12 60 views
0

我創建SQL Server中的SQLQuery.sql與此內容:如何使用保存點SQL Server Management Studio中

declare @sql int; 

select @sql = count(1) from sys.tables 

save tran one 
print @sql 

select @sql = 0 
save tran two 

print @sql 
rollback tran one 

print @sql 

我所期望的結果爲:

n 
0 
n 

什麼是錯我的查詢?

回答

3

事務不會影響局部變量,它們允許您批量更改將更改數據庫內容的語句集。我已經優化了你的例子來說明:

BEGIN TRANSACTION 
declare @sql int; 
select @sql = count(1) from sys.tables 
print @sql 
save transaction one 
CREATE TABLE TEMP (a varchar(1)) 
select @sql = count(1) from sys.tables 
print @sql 
select @sql = count(1) from sys.tables 
save tran two 
CREATE TABLE TEMP2 (a varchar(1)) 
select @sql = count(1) from sys.tables 
print @sql 
rollback tran one 
select @sql = count(1) from sys.tables 
print @sql 

現在你可以看到,在交易的步驟表的數量積聚,但ROLLBACK後的新的消失:

6 
7 
8 
6 

我希望有所幫助。

+0

謝謝,我創建了#tableTemp並在那裏插入了'@sql',然後我回滾了tran並且結果如預期的那樣(首先我得到了'@sql'變量返回,然後我得到null或空字符串返回) –

相關問題