0

トランザクションのスコープがあり、次のことをしたい:

using (var scope = new TransactionScope())
{
   1) Insert row into table1
   2) Select rows from table1  (incuding inserted row in step 1)
   3) Insert another row into table1 
   4) Select rows from table1 (incuding inserted row in step 1 and 3)
}

これらの操作で sql デッドロックが発生する可能性はありますか? 私はDb作業にEntity Frameworkを使用しています。これについてはよくわかりません。

ありがとうございました、

良い1日を。

4

2 に答える 2

1

これで問題はないはずです。

挿入により、他のユーザーがロックアウトされたり、自分が行った他のトランザクションがロックされたりする可能性がありますが、同じSql トランザクションで何も実行できなくなるわけではありません。

于 2013-04-25T19:10:01.630 に答える
0

はい、デッドロックが発生する可能性があります。

SQL Server操作に必要なロックINSERTをページまたはテーブル レベルにエスカレートすることを選択した場合、次のシナリオが発生します。

Transaction 1         Transaction 2
INSERT INTO page1
                      INSERT INTO page2
                      INSERT INTO page1
INSERT INTO page2

その場合、2 つのトランザクションがデッドロックになり、そのうちの 1 つをロールバックする必要があります。

于 2013-04-25T17:33:27.967 に答える