2009-03-16 2 views
0

Случай 1:Зависит ли транзакционное соединение SQL Server 2000+?

  1. Я начинаю подключение к БД
  2. я начинаю TRANSACTION
  3. я закрыть соединение

    Что происходит с сделки?

Случай 2:

  1. я начала подключения к БД
  2. я начать транзакцию
  3. я начать одновременное подключение к одной и той же БД
  4. со второй связи я изменить содержимое таблицы
  5. С первым подключением I ROLLBACK ОПЕРАЦИЯ

    Что происходит с изменениями?

ответ

2

Случай 1: Откат

Случай 2: на шаге 4, вы не можете изменять строки, которые прикасались первым соединением, так что нет никакого эффекта: второе соединение не может изменить, его будет ждать (из-за блокировок).

+0

Что это за «прикосновение»? Если первое соединение изменяет строку 1 таблицы A, это означает, что другие строки нетронуты, и они могут быть изменены вторым соединением во время транзакции? –

+0

, что зависит от блокировок, выполняемых сервером sql. –

+0

@Jader: «коснулся» как в: чтение/изменение как соединение 1 устанавливает блокировки строк, прочитанных/измененных, и соединение 2 должно подчиняться этим. Если 1-я транзакция установлена ​​как readuncommitted как изоляция, соединение два может читать измененные строки, но не изменять их –

1

Просто для добавления: Сделки зависят от сеанса - это объясняет ваш первый вопрос.