Penso di essere in qualche modo vicino per farlo funzionare, ma per qualche motivo ricevo ancora errori.
Ho la seguente query di AGGIORNAMENTO:
UPDATE DeviceAttribute
SET Details = CASE Name
WHEN 'Accessories' THEN @Accessories
WHEN 'Description' THEN @Description
WHEN 'Specification' THEN @Specification
ELSE Details
END
WHERE DeviceID = 10
I parametri sono compilati da diversi utenti. Il problema che devo affrontare ora è che anche quando si desidera aggiornare un singolo campo, è necessario compilare con i vecchi dati gli altri parametri. Pertanto, desidero impostare l'opzione SE @parameter IS NULL THEN keep the value che è già memorizzato nel DB. Ho provato a trovare una soluzione e qualcosa come la seguente query sembra essere la soluzione ma non riesco a farlo funzionare:
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
IL DB è archiviato in SQL Server 2008
Grazie in anticipo per l'aiuto.
EDIT per chiarire:
La tabella originale è simile a questa
DeviceID|Name |Details |
10 |Accessories |earplugs |
10 |Description |protectors|
10 |Specification|BeatsByDre|
Per motivi di pubblicazione ho fatto una query per girare le tabelle. Pertanto, quando viene eseguita la query Seleziona, la tabella di ritorno appare come la seguente
DeviceID|Accessories|Description|Specification|
10 |earplugs |protectors |BeatsByDre |
Ho creato un'interfaccia utente per consentire agli utenti del sistema di aggiornare i diversi campi come Accessori, Descrizione, Specifica. L'aggiornamento funziona se aggiorno tutti i campi con la query mostrata in alto. Tuttavia, quando lascio vuota una casella di testo, viene visualizzato un messaggio di errore nel parametro @parameter. Quindi, cercando di trovare una soluzione per aggiornare solo il campo in cui è scritto qualcosa. Quindi, se @parameter IS NULL, mantenere il valore originale nel DB. Ho trovato un'altra soluzione che è molto vicina a ciò che voglio ma non riesco a farlo funzionare. Ecco l'altra soluzione: /programming/9387839/mysql-if-not-null-then-display-1-else-display-0
'@'Accessories
non ha senso per me.
UPDATE
affermazione invia l'interfaccia utente al database?