成功した暗黙的なまたは明示的なトランザクションを終了させます。もしCOMMITがトランザクション名または変数付きで定義された場合、Microsoft SQL Server はユーザ定義トランザクションを終了させます。
もし @@TRANCOUNT が1であれば、COMMIT TRANSACTIONはトランザクション開始以来行われた全てのデータ変更を永続的に反映し @@TRANCOUNT を0に減算します。もし @@TRANCOUNT が1より大きい場合、COMMIT TRANSACTIONの実行により @@TRANCOUNT は1だけ減算されます。
ネストされたトランザクションでCOMMITが行われた場合、内側のトランザクションのみをコミットするだけでリソースの解放や変更の永続化は行われません。データ変更の永続化やリソースの解放は外側のトランザクションのコミットによってのみ行われます。@@TRANCOUNTが1より大きい時に実行される各COMMIT TRANSACTIONでは単に@@TRANCOUNTの1減算が行われるのみです。@@TRANCOUNTがついに0になった時に、全ての外側のトランザクションがコミットされたことになります。SQL Serverではtransaction_nameが無視されるため、未完了の内側のトランザクションがある場合に外側のトランザクションの名前を指定したCOMMIT TRANSACTIONが発行されても @@TRANCOUNTの1減算が行われるだけになります。
|