J'ai un triggersur d'alarme, et si ce triggersur d'alarme = 1, je veux que la valeur d'une autre colonne soit NULL. Par exemple, je vais créer un tableau simple de ce que j'essaie d'expliquer.
DECLARE @tmp TABLE ( ID INT, Value1 FLOAT, V1_Alarm BIT, Value2 FLOAT, V2_Alarm BIT) INSERT INTO @tmp SELECT ( ID, CASE WHEN V1_Alarm = 1 THEN NULL ELSE Value1, V1_Alarm, CASE WHEN V2_Alarm = 1 THEN NULL ELSE Value2 ) FROM SomeTable
Vous ne terminez pas correctement vos déclarations de cas. En outre, les parenthèses sont inutiles et empêchent plusieurs valeurs d'être transmises. Voici votre exemple de code modifié:
DECLARE @tmp TABLE ( ID INT, Value1 FLOAT, V1_Alarm BIT, Value2 FLOAT, V2_Alarm BIT) INSERT INTO @tmp SELECT ID, CASE WHEN V1_Alarm = 1 THEN NULL ELSE Value1 END, V1_Alarm, CASE WHEN V2_Alarm = 1 THEN NULL ELSE Value2 END FROM SomeTable