2013-09-26 112 views
15

我已經通過SQL Server Manager對我的記錄進行了一些更新。我們是否需要在SQL Server更新後執行Commit語句

由於Update語句沒有顯式提交,我正在嘗試手動編寫它。

Update mytable 
set status=0; 
Commit; 

我得到消息提交已沒有開始交易不像甲骨文不需要

+0

提交之前,您應該開始交易。 –

+2

您應該打開一個交易。在它裏面你應該執行更新然後提交更改。 – lexeme

+0

看看它是如何工作在這裏:http://www.codeproject.com/Articles/10223/Using-Transactions-in-ADO-NET – lexeme

回答

30

SQL Server Management Studio已啓用隱式提交,因此所有執行的語句都是隱式提交的。

如果您來自Oracle背景,默認情況下不會有自動提交的命令,但這並不是什麼大問題,這可能是一件可怕的事情。

如果你仍然想使用點對點的交易,你可以隨時執行

BEGIN TRANSACTION 
內SSMS

,比系統等待你提交的數據。

如果你想複製甲骨文的行爲,並啓動一個隱式事務,每當一些DML/DDL發出後,您可以在SET IMPLICIT_TRANSACTIONS複選框在

Tools -> Options -> Query Execution -> SQL Server -> ANSI 
+2

嗨@SWeko。非常有幫助,thx。我是否有權假定,該複選框未經檢查意味着交易是隱式提交的?那是我的(默認)情況。然後,該複選框的命名很奇怪。順便說一句,相關問題在這裏:http://stackoverflow.com/questions/17576649/safely-delete-rows-in-sqlserver-so-you-can-rollback-a-commit –

+0

謝謝你的答案 – Patan

+0

如果複選框是檢查,然後一個'SELECT'語句,隱式啓動一個事務,這將需要顯式提交。 – SWeko

5

SQL Server的承諾,除非你正在使用的交易。
立即在更新語句後表將被提交,不要在這種情況下使用commit命令。

相關問題