2012-02-13 11 views

答えて

7

問題のCOMMITは実際にCOMMITするとは思われません。 COMMIT WORK

COMMIT [WORK] [; ]

備考

トランザクションをコミット以外の機能は全く同じ、トランザクションをコミットするこのステートメントは、ユーザー定義のトランザクション名を受け入れます。このCOMMIT構文は、オプションのキーワードWORKを指定してもしなくても、SQL-92と互換性があります。それだけでそう

COMMITCOMMIT TRANSACTIONと同一であるCOMMIT WORKです。コメント後ROLLBACK [ WORK ]

ため
同上、

BEGIN TRANSACTION gbn 
SELECT 1 
COMMIT gbn -- fail 
GO 
BEGIN TRANSACTION gbn 
SELECT 2 
COMMIT TRAN gbn -- works 
GO 
+0

「COMMIT TRANSACTIONはユーザー定義のトランザクション名を受け入れます」というメッセージが表示されますが、トランザクションの名前がわかりません。 + 'WORK'キーワードについては話していません。私はコミット対コミットについて話しています。 –

+0

@Royi Namir:いいえ、COMMITはCOMMIT WORKを意味します。名前付き取引とは何も関係ありません。あなたが名前をつけたのであれば、あなたはそのことについて言及していませんでした。そして、名前をつけて、明示的に 'COMMIT TRANSACTION SomeName'または' COMMIT TRAN SomeName'を使わなければなりません。 * NOT *それ自身でCOMMITする – gbn

+0

名前付きトランザクションを使用しない場合、私はいつもCommitを単独で使うことができます。右 ? –

0

IF @@TRANCOUNT > 0は、(少なくとも)があるもの、保留中のトランザクションをチェックすることを目的と - 任意のトランザクションのオープンを持つことなく、これらの命令を実行するようROLLBACKCOMMIT両方で使用する必要がある場合

関連する問題