Bukan CASE
harus memiliki lebih dari satu, WHEN...THEN
, itu harus menangani semua data yang Anda berikan.
Jika Anda menghapus salah satu klausa, Anda meninggalkan lubang. misalnya
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
END
WHERE buildFK = 1;
Dengan pernyataan pembaruan ini, jika parkFK
adalah 2, maka pembaruan gagal karena CASE tidak dapat menangani input.
Anda dapat membatasi data sumber Anda dengan menambahkan baris lain ke klausa where Anda (mis. AND partFK in (1,2)
), atau Anda dapat menambahkan ELSE
ke ekspresi kasus.
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
WHEN partFK = 2 THEN 8
ELSE 12
END
WHERE buildFK = 1;
Namun, berdasarkan pernyataan SQL yang Anda tunjukkan, mungkin ada cara yang lebih baik. Agaknya, partFK adalah kunci asing ke beberapa tabel lain. Bisakah Anda menarik nilai untuk quantity
dari sana?