MS SQL で Begin Transaction と commit transaction の間にクエリを挿入すると、クエリの実行を中止または停止するとどうなりますか。ROLLBACKED の実行中に行われたすべての変更は行われますか?
24210 次
3 に答える
1
ROLLBACK TRANSACTION
またはなどを呼び出すまでCOMMIT TRANSACTION
、または SQL がなんらかのアクションを実行するまで、トランザクションは開いたままにすることができます。
より詳しい情報:
- トランザクション中に SQL Server と接続が失われる
- 接続が閉じられると、コミットされていないトランザクションはどうなりますか?
- データベース (SQL Server など) でトランザクションをコミットしないとどうなるか
大規模な更新や修正をテストするときは、実際にこれを利用したいと思っています。次のようなものがあります。
-- BEGIN TRANSACTION
-- ROLLBACK TRANSACTION
-- COMMIT TRANSACTION
/*
A bunch of SQL code here
*/
次に、を強調表示/実行してBEGIN TRANSACTION
から、スクリプト全体を実行できます。結果に満足している場合は、COMMIT TRANSACTION
. そうでない場合は、 を実行しROLLBACK TRANSACTION
ます。これらの行はコメント アウトされているため、明示的に強調表示して実行しない限り、トランザクション全体に影響を与えることはありません。
于 2013-06-26T14:06:24.123 に答える
0
いいえ。トランザクションは引き続きアクティブです。結局のところ、ロールバックしていませんか? :) この例を実行して、何が起こるか見てみましょう。トランザクション中に中断すると、値 2 がテーブルに表示されますが、ロールバックまたはコミットする必要があります。
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
于 2013-06-26T14:05:57.840 に答える
0
それはあなたのコードに依存します。トランザクションが存在する限り、すべての変更はロールバックまたはコミットが保留されます。
これを見たいと思うかもしれません。
于 2013-06-26T14:04:25.100 に答える