2009-03-16 16 views
0

ケース1:SQL Server 2000以上のトランザクションは接続に依存しますか?

  1. 私はDB
  2. への接続を開始私は、接続のトランザクションはどう

    を閉じTRANSACTIONに

  3. をBEGIN?

ケース2:

  1. 私はDB
  2. への接続を開始し、私は第二の接続で同じDB
  3. への同時接続を開始
  4. BEGIN TRANSACTIONをIテーブルの内容を変更する
  5. 最初の接続では、私はROLLBACKのトランザクション

    変更はどうなりますか?

答えて

2

ケース1:ロールバック

ケース2:ステップ4で、あなたは何の効果もありませんので、最初の接続に感動されている行を変更することはできません。第二の接続は、それを変更することはできません(ロックのために)待機します。

+0

この「タッチ」のことは何ですか?最初の接続で表Aの行1が変更された場合、他の行は変更されておらず、トランザクション中に2番目の接続によって変更される可能性があります。 –

+0

は、SQL Serverが実行するロックに依存します。 –

+0

@Jader: 'touched' in:read/modify connection 1は読み取り/変更された行のロックを設定し、接続2はそれらに従わなければなりません。最初のトランザクションが読取り専用に設定されている場合、接続2は変更された行を読み取ることができますが、変更しません –

1

ちょうど追加する: トランザクションはセッションに依存します - これはあなたの最初の質問を説明します。

関連する問題