2013-06-26 46 views
0

如果我在MS SQL中的Begin Transaction和Commit事務之間附上查詢,如果我中止或停止查詢的執行,會發生什麼情況。將執行ROLLBACKED期間所做的所有更改。?在MS SQL中開始事務並提交事務

回答

0

這取決於你的代碼。只要您的事務存在,所有更改都將等待回滾或提交。您可能要查看this

0

編號交易將仍然有效 - 你沒有回滾,是嗎? :) 運行這個例子,看看會發生什麼。如果您在事務中斷時,您會看到值2在表中,但您必須回滾或提交。直到調用類似ROLLBACK TRANSACTIONCOMMIT TRANSACTION

select 1 as x into #xxx 
GO 


begin transaction 

    insert into #xxx(x) select 2 
    -- ctrl+break before time runs out. 
    waitfor delay '00:00:10' 

commit transaction 


-- now try this: 
select * from #xxx 
rollback transaction 
select * from #xxx 
1

您的交易可以保持打開,或直到SQL需要它的一些行動。

更多信息:

其實我喜歡大測試更新或更正時,利用這一優勢。你可以有這樣的事情:

-- BEGIN TRANSACTION 
-- ROLLBACK TRANSACTION 
-- COMMIT TRANSACTION 

/* 
    A bunch of SQL code here 
*/ 

然後你就可以突出顯示/運行BEGIN TRANSACTION,然後運行整個腳本。如果您對結果滿意,您可以突出顯示/運行COMMIT TRANSACTION。如果沒有,運行ROLLBACK TRANSACTION。由於這些行被註釋掉了,除非您明確突出顯示並運行它們,否則它們不會影響整個事務。