ケース1:SQL Server 2000以上のトランザクションは接続に依存しますか?
- 私はDB
- への接続を開始私は、接続のトランザクションはどう
を閉じTRANSACTIONに
をBEGIN?
ケース2:
- 私はDB
- への接続を開始し、私は第二の接続で同じDB
- への同時接続を開始
- BEGIN TRANSACTIONをIテーブルの内容を変更する
最初の接続では、私はROLLBACKのトランザクション
変更はどうなりますか?
ケース1:SQL Server 2000以上のトランザクションは接続に依存しますか?
を閉じTRANSACTIONに
をBEGIN?
ケース2:
最初の接続では、私はROLLBACKのトランザクション
変更はどうなりますか?
ケース1:ロールバック
ケース2:ステップ4で、あなたは何の効果もありませんので、最初の接続に感動されている行を変更することはできません。第二の接続は、それを変更することはできません(ロックのために)待機します。
ちょうど追加する: トランザクションはセッションに依存します - これはあなたの最初の質問を説明します。
この「タッチ」のことは何ですか?最初の接続で表Aの行1が変更された場合、他の行は変更されておらず、トランザクション中に2番目の接続によって変更される可能性があります。 –
は、SQL Serverが実行するロックに依存します。 –
@Jader: 'touched' in:read/modify connection 1は読み取り/変更された行のロックを設定し、接続2はそれらに従わなければなりません。最初のトランザクションが読取り専用に設定されている場合、接続2は変更された行を読み取ることができますが、変更しません –