2013-09-26 36 views
15

SQL Serverマネージャーを使用してレコードを更新しました。 UPDATEステートメントとしてSQL Serverの更新後にCommitステートメントを実行する必要があります

は、私はそれを手動で記述しようとしています、明示的なコミット持っていません。

Update mytable 
set status=0; 
Commit; 

コミットとして、私はメッセージを取得していますが何のトランザクションを使用している場合を除き、オラクルとは異なり、取引

+0

でSET IMPLICIT_TRANSACTIONSチェックボックスを設定することができますしたい場合はあなたがコミットする前にトランザクションを開始する必要があります。 –

+2

トランザクションを開く必要があります。その中で更新を実行してから変更をコミットする必要があります。 – lexeme

+0

それはここで動作を参照してください:http://www.codeproject.com/Articles/10223/Using-Transactions-in-ADO-NET – lexeme

答えて

30

SQL Server Management Studioのはとても実行されたすべての文が暗黙的にコミットされ、オン暗黙のコミットしています。

デフォルトは、コマンドが自動的にコミットしていないではないが、それは問題のあまりないことですOracleバックグラウンドから来た場合、これは怖いものになるかもしれません。あなたはまだアドホックトランザクションを使用する場合は

、あなたは常にSSMS内

BEGIN TRANSACTION 

を実行し、システムよりも、あなたがデータをコミットするのを待つことができます。

は、Oracleの動作を複製して、暗黙のトランザクションを開始し、いくつかのDML/DDLが発行されるたびに、あなたは

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

こんにちは@SWeko。非常に有用な、thx。仮定する権利はありますか?そのチェックボックスをオフにすると、取引は暗黙的にコミットされますか?それは私の(デフォルト)状況です。そのチェックボックスの名前は奇妙です。 btw、関連する問題はこちら:http://stackoverflow.com/questions/17576649/safely-delete-rows-in-sqlserver-so-you-can-rollback-a-commit –

+0

ありがとうございます – Patan

+0

チェックボックスがオンの場合チェックされた後、SELECT文が明示的にコミットされる必要があるトランザクションを暗黙的に開始します。 – SWeko

5

SQL Serverがコミットを必要としない始めていません。
更新ステートメントの直後にテーブルがコミットされます。このシナリオでは、コミットコマンドを使用しないでください。

関連する問題