Я не могу сказать, будет ли это "работать", потому что вы не сказали, на что надеетесь, будут результаты.
Все выражения в правой части знака равенства будут использоватьсяих значения, какими они были до обновления.
Так, например,
Set column_2 = case when colum_2 = 0 then column_1 else column_2 end,
Column_3 =case when colum_3 = 0 then column_ 2 else column_ 3 end
... никогда не заставит Column_3
получить значение, которое изначально было в Column_1
, чего можно бояться, если оба значения Column_2
и Column_3
изначально равны нулю.
Этого не произойдет.Если оба значения Column_2
и Column_3
изначально равны нулю, для Column_2
будет установлено исходное значение Column_1
, а для Column_3
будет установлено исходное значение Column_2
(которое мы 'мы уже говорили, что было ноль).
Если, когда оба столбца равны нулю, вы хотите, чтобы оба столбца получили значение Column_1
, вам нужно было бы написать его так:
SET column_2 = case when column_2 = 0 then column_1 else column_2 end,
column_3 = case when column_3 = 0
then
case when column_2 = 0 THEN column_1 ELSE column_2 end
else
column_3 end