Есть ли способ изменить другие поля столбца при обновлении поля?

#sql-server

#sql-server

Вопрос:

 id status
-------------
1   no
2   yes
3   no
4   yes
5   --
  

когда я обновляю столбец статуса до ‘yes’ с идентификатором 5,

Я хочу получить такие результаты

 id    status
-------------
1      no
2      no
3      no
4      no
5      Yes
  

Возможно ли это?

Ответ №1:

Вы можете добиться этого с помощью CASE инструкции или IIF функции.

Запрос будет:

 UPDATE SampleTable SET [Status] = CASE WHEN Id = @InputValue THEN 'yes' ELSE 'no' END;
  

или

 UPDATE SampleTable SET [Status] = IIF(Id = @InputValue , 'yes', 'no');
  

Демонстрация DB Fiddle

Ответ №2:

Мое предложение состоит в том, чтобы иметь несколько инструкций update в транзакции в зависимости от ваших потребностей, для приведенного выше примера у вас будет :

 update tableName set status = 'Yes' where id = 5;

update tableName set status = 'no' where id <> 5;
  

Хороший вариант иметь оба запроса на обновление в транзакции для завершения обоих (либо успешного, либо неудачного)