Tôi nghĩ rằng tôi bằng cách nào đó gần để làm cho nó hoạt động, nhưng vì một số lý do tôi vẫn nhận được lỗi.
Tôi có truy vấn CẬP NHẬT sau:
UPDATE DeviceAttribute
SET Details = CASE Name
WHEN 'Accessories' THEN @Accessories
WHEN 'Description' THEN @Description
WHEN 'Specification' THEN @Specification
ELSE Details
END
WHERE DeviceID = 10
Các thông số được điền bởi người dùng khác nhau. Vấn đề tôi gặp phải bây giờ là ngay cả khi bạn muốn cập nhật một trường duy nhất, bạn vẫn phải điền vào dữ liệu cũ các tham số khác. Do đó, tôi muốn đặt tùy chọn IF @parameter IS NULL THEN giữ giá trị đã được lưu trữ trong DB. Tôi đã cố gắng tìm một số giải pháp và một cái gì đó giống như truy vấn sau đây có vẻ là giải pháp nhưng tôi không thể làm cho nó hoạt động:
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
DB được lưu trữ trong SQL Server 2008
Xin được cảm ơn trước về sự giúp đỡ.
EDIT để làm rõ:
Bảng gốc trông như thế này
DeviceID|Name |Details |
10 |Accessories |earplugs |
10 |Description |protectors|
10 |Specification|BeatsByDre|
Vì lý do xuất bản, tôi đã thực hiện một truy vấn để biến các bảng. Vì vậy, khi truy vấn Chọn được chạy, bảng trả về trông như sau
DeviceID|Accessories|Description|Specification|
10 |earplugs |protectors |BeatsByDre |
Tôi đã tạo một giao diện người dùng để cho phép người dùng hệ thống cập nhật các trường khác nhau như Phụ kiện, Mô tả, Thông số kỹ thuật. Cập nhật hoạt động nếu tôi cập nhật tất cả các trường với truy vấn được hiển thị ở trên cùng. Tuy nhiên, khi tôi để trống một hộp văn bản, sau đó tôi gặp lỗi là @parameter bị thiếu một giá trị. Vì vậy, cố gắng tìm một giải pháp để chỉ cập nhật lĩnh vực mà một cái gì đó được viết. Vì vậy, nếu @parameter IS NULL thì hãy giữ giá trị ban đầu trong DB. Tôi đã tìm thấy một giải pháp khác thực sự gần với những gì tôi muốn nhưng không thể làm cho nó hoạt động được. Đây là giải pháp khác: /programming/9387839/mysql-if-not-null-then-display-1-else-display-0
'@'Accessories
đó không có ý nghĩa với tôi.
UPDATE
tuyên bố không send UI cơ sở dữ liệu?