Não é que o
CASE
deve ter mais de um, WHEN...THEN
, é que ele deve lidar com todos os dados que você fornece. Se você removeu uma das cláusulas, você deixa um buraco. por exemplo.
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
END
WHERE buildFK = 1;
Com esta declaração de atualização, se
parkFK
for 2, a atualização falhará porque o CASE não pode manipular a entrada. Você pode limitar seus dados de origem adicionando outra linha à sua cláusula where (por exemplo,
AND partFK in (1,2)
), ou você pode adicionar um ELSE
para a expressão case. UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
WHEN partFK = 2 THEN 8
ELSE 12
END
WHERE buildFK = 1;
No entanto, com base na instrução SQL que você mostrou, provavelmente há uma maneira melhor. Presumivelmente, partFK é uma chave estrangeira para alguma outra tabela. Você pode extrair o valor para
quantity
de lá?