Eu quero atualizar alguns dados em um caso especificado, senão essas colunas não devem ser atualizadas.
O que posso escrever código em um procedimento armazenado para isso?
Respostas:
9 para resposta № 1Você pode usar um case
para controlar se você atribui um novo valor ou mantém o valor antigo.
update <sometable>
set field = case when <condition> then <newvalue> else field end
where <condition>
Exemplo:
update questions
set reply = case when @input is not null then @input else reply end
where answer = 42
6 para resposta № 2
Use a instrução Case na cláusula Update
gostar
Instrução SQL # 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
Tirado de ATUALIZAÇÃO DO SERVIDOR SQL
Além disso, você pode ir com a declaração if..else
Se você estivesse no SQL SERVER 2008, poderia ter o sabor da instrução MERGE.
3 para resposta № 3
Apenas um exemplo:
IF @a <= 0
BEGIN
UPDATE table SET counter = @a, name = "Minati"
END
ELSE
BEGIN
UPDATE table SET name = "Minati"
END
3 para resposta № 4
Pode ser que você possa construir a condição na atualizaçãocomando e facilmente executar mais de uma atualização com as diferentes condições. Pode não ser a maneira mais elegante, mas é bastante eficiente. Depende das suas necessidades.
UPDATE table SET field=value WHERE <<condition>>
UPDATE table SET field=value2 WHERE <<condition2>>