Обновление оператора в процессе SQL - PullRequest
1 голос
/ 02 ноября 2010

Я просто хочу знать, как работает оператор обновления? Мол, что делает SQL во время оператора обновления? В настоящее время я понимаю следующий сценарий.

UPDATE Employees
SET
   EmployeeLeaves -= 1,
   IsOnLeave = CASE WHEN (EmployeeLeaves > 0) THEN 1 ELSE 0 END
WHERE
   EmployeeNo = 2000;

В выражении IsOnLeave означает ли это, что если «предыдущий» EmployeeLeaves больше 1, то IsOnleave будет обновлен до 1?

Ответы [ 3 ]

1 голос
/ 02 ноября 2010

Краткий ответ: да он получит 1 или 0, но большинство реализаций sql будут использовать значение EmployeeLeaves перед обновлением перед установкой нового значения.Кажется разумным, так как операция в атомном.

0 голосов
/ 02 ноября 2010

Да, все в правой части назначения в UPDATE SQL относится к значению записи до обновления.

0 голосов
/ 02 ноября 2010

Почти, но не совсем, верно.Столбец IsOnLeave будет обновлен независимо от того, что;оно становится равным 1, если EmployeeLeaves> 0, в противном случае - 0. Но да, это значение EmployeeLeaves исходной записи (до обновления), которое считается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...