Chcę zaktualizować niektóre dane w określonym przypadku, w przeciwnym razie te kolumny nie będą aktualizowane.
Co mogę napisać kod w procedurze przechowywanej do tego?
Odpowiedzi:
9 dla odpowiedzi № 1Możesz użyć a case
kontrolować, czy przypisujesz nową wartość, czy zachowujesz starą wartość.
update <sometable>
set field = case when <condition> then <newvalue> else field end
where <condition>
Przykład:
update questions
set reply = case when @input is not null then @input else reply end
where answer = 42
6 dla odpowiedzi nr 2
Użyj instrukcji Case w klauzuli Update
lubić
Instrukcja SQL nr 6
UPDATE titles
SET price =
CASE
WHEN (price < 5.0 AND ytd_sales > 999.99)
THEN price * 1.25
WHEN (price < 5.0 AND ytd_sales < 1000.00)
THEN price * 1.15
WHEN (price > 4.99 AND ytd_sales > 999.99)
THEN price * 1.2
ELSE price
END
Pochodzą z Aktualizacja SQL SERVER
Możesz również użyć instrukcji if ... else
Gdybyś był w SQL SERVER 2008, mógłbyś skorzystać z zalet komunikatu MERGE
3 dla odpowiedzi nr 3
Tylko przykład:
IF @a <= 0
BEGIN
UPDATE table SET counter = @a, name = "Minati"
END
ELSE
BEGIN
UPDATE table SET name = "Minati"
END
3 dla odpowiedzi № 4
Może być możliwe zbudowanie warunku w aktualizacjipolecenie i łatwo uruchomić więcej niż jedną aktualizację w różnych warunkach. Może nie jest to najbardziej elegancki sposób, ale jest skuteczny. To zależy od twoich potrzeb.
UPDATE table SET field=value WHERE <<condition>>
UPDATE table SET field=value2 WHERE <<condition2>>