Saya pikir saya entah bagaimana sudah dekat untuk membuatnya bekerja, tetapi untuk beberapa alasan saya masih mendapatkan kesalahan.
Saya memiliki permintaan UPDATE berikut:
UPDATE DeviceAttribute
SET Details = CASE Name
WHEN 'Accessories' THEN @Accessories
WHEN 'Description' THEN @Description
WHEN 'Specification' THEN @Specification
ELSE Details
END
WHERE DeviceID = 10
Parameter diisi oleh pengguna yang berbeda. Masalah yang saya hadapi sekarang adalah bahwa bahkan ketika Anda ingin memperbarui satu bidang Anda masih harus mengisi dengan data lama parameter lainnya. Oleh karena itu saya ingin mengatur opsi JIKA @parameter IS NULL LALU menjaga nilai yang sudah disimpan dalam DB. Saya mencoba menemukan beberapa solusi dan sesuatu seperti kueri berikut tampaknya menjadi solusi tetapi saya tidak dapat membuatnya berfungsi:
UPDATE DeviceAttribute
SET Details = CASE Name
WHEN 'Accessories' IS NOT NULL THEN @Accessories
WHEN 'Description' IS NOT NULL THEN @Description
WHEN 'Specification' IS NOT NULL THEN @Specification
ELSE Details
END
WHERE DeviceID = 10
THE DB disimpan dalam SQL Server 2008
Terima kasih sebelumnya atas bantuannya.
EDIT untuk mengklarifikasi:
Tabel aslinya terlihat seperti ini
DeviceID|Name |Details |
10 |Accessories |earplugs |
10 |Description |protectors|
10 |Specification|BeatsByDre|
Untuk alasan penerbitan, saya membuat kueri untuk membalik tabel. Jadi ketika kueri pemilihan dijalankan, tabel kembali terlihat seperti berikut ini
DeviceID|Accessories|Description|Specification|
10 |earplugs |protectors |BeatsByDre |
Saya membuat UI untuk memungkinkan pengguna sistem memperbarui bidang yang berbeda seperti Aksesori, Deskripsi, Spesifikasi. Pembaruan berfungsi jika saya memperbarui semua bidang dengan kueri yang ditunjukkan di atas. Namun ketika saya membiarkan kotak teks kosong, maka saya mendapatkan kesalahan bahwa @parameter kehilangan nilai. Jadi berusaha mencari solusi untuk memperbarui hanya bidang di mana ada sesuatu yang ditulis. Jadi jika @parameter IS NULL maka simpan nilai asli dalam DB. Saya menemukan solusi lain yang sangat dekat dengan apa yang saya inginkan tetapi tidak dapat membuatnya bekerja. Berikut adalah solusi lain: /programming/9387839/mysql-if-not-null-then-display-1-else-display-0
sumber
UPDATE
pernyataan apakah kirim UI ke database?'@'Accessories
tidak masuk akal bagi saya.Jawaban:
Saya pikir ini akan menyelesaikan masalah:
atau ini (untuk menghindari pembaruan yang berlebihan):
atau ini, menggunakan konstruktor nilai tabel:
sumber