Ce n'est pas que le CASE
doit en avoir plus d'un, WHEN...THEN
, c'est qu'il doit gérer toutes les données que vous lui donnez.
Si vous supprimez l'une des clauses, vous laissez un vide. ex.
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
END
WHERE buildFK = 1;
Avec cette instruction de mise à jour, if parkFK
est 2, la mise à jour échoue car le CASE ne peut pas gérer l'entrée.
Vous pouvez soit limiter vos données source en ajoutant une autre ligne à votre clause where (par exemple, AND partFK in (1,2)
), ou vous pouvez ajouter un ELSE
à l'expression de cas.
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
WHEN partFK = 2 THEN 8
ELSE 12
END
WHERE buildFK = 1;
Cependant, sur la base de l'instruction SQL que vous avez montrée, il existe probablement un meilleur moyen. Vraisemblablement, partFK est une clé étrangère vers une autre table. Pouvez-vous tirer la valeur de quantity
à partir de là ?