T-SQL условное ОБНОВЛЕНИЕ (v2)

У меня есть таблица:

Message (MessageID int, Subject nvarchar(100), Body nvarchar(max))

После обновления сообщения в пользовательском интерфейсе я вызываю сохраненный процесс для обновления этой таблицы. В некоторых случаях пользователь может обновить только тему, в других случаях только тело. Я хочу, чтобы этот сохраненный процесс обновлял только то, что изменилось, поэтому я также передаю флаги, показывающие, был ли обновлен предмет или текст:

create proc UpdateMessage(
  @MessageID int, 
  @Subject nvarchar(100), 
  @Body nvarchar(max),
  @SubjectChanged bit,
  @BodyChanged bit)

И теперь я запутался, как построить условноеUPDATE заявление. Моей первой мыслью было использоватьCASE:

Update [Message] 
SET 
CASE WHEN @SubjectChanged = 1 THEN [Subject] = @Subject ELSE 1=1 END,
CASE WHEN @BodyChanged = 1 THEN Body = @Body ELSE 1=1 END,
WHERE MessageID = @MessageID

... но это не похоже на правильный синтаксисCASE должен быть правой стороной задания.

Есть идеи, как я мог это сделать? (И имейте в виду, что в действительности существует 6 параметров, которые можно обновить, а не два)

Ответы на вопрос(8)

Ваш ответ на вопрос