UPDATE conditionnel T-SQL (v2)

J'ai une table:

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

Après qu'un message est en cours de mise à jour sur l'INTERFACE utilisateur, j'appelle une procédure stockée pour mettre à jour la table. Dans certains cas, l'utilisateur peut mettre à jour juste l'objet, dans d'autres cas, juste le corps. Je veux que cette procédure stockée uniquement mettre à jour ce qui a changé, je suis donc aussi en passant des drapeaux indiquant si l'objet ou le corps a été mis à jour à:

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

Et maintenant, je suis confus comment construire le conditionnel UPDATE déclaration. Ma première pensée a été d'utiliser 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

... mais qui ne semble pas être une syntaxe correcte comme CASE doit être le côté droit d'une affectation.

Aucune idées de comment je pourrais faire? (Et garder à l'esprit que dans la réalité il y a 6 paramètres qui peuvent être mis à jour, pas deux)

source d'informationauteur Andrey | 2009-10-10