Det er ikke det CASE
skal have mere end én, WHEN...THEN
, det er, at den skal håndtere alle de data, du giver den.
Hvis du fjernede en af klausulerne, efterlader du et hul. f.eks.
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
END
WHERE buildFK = 1;
Med denne opdateringserklæring, hvis parkFK
er 2, så mislykkes opdateringen, fordi CASE'en ikke kan håndtere inputtet.
Du kan enten begrænse dine kildedata ved at tilføje endnu en linje til din where-klausul (f.eks. AND partFK in (1,2)
), eller du kan tilføje en ELSE
til kasusudtrykket.
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
WHEN partFK = 2 THEN 8
ELSE 12
END
WHERE buildFK = 1;
Men baseret på den SQL-sætning, du har vist, er der sandsynligvis en bedre måde. Formentlig er partFK en fremmednøgle til et andet bord. Kan du trække værdien for quantity
derfra?