2 votes

Mise à jour d'une ligne SQLite uniquement si une colonne est vide

J'ai les éléments suivants :

$query = $db->prepare("UPDATE name SET one=?,two=?,three=? WHERE id = ?");
$query->bindParam(1, $one);
$query->bindParam(2, $two);
$query->bindParam(3, $three);
$query->bindParam(4, $id);

one y three doit toujours être mis à jour.

Cependant, comment puis-je mettre à jour two sólo si elle est nulle/vide ?

Je peux le faire dans une commande séparée, mais comment puis-je le faire dans une déclaration préparée ?

J'utilise SQLite3

1voto

forpas Points 116974

Utilisez un CASE expression pour la colonne two :

UPDATE name 
SET one=?,
    two=CASE WHEN two IS NULL THEN ? ELSE two END,
    three=? 
WHERE id = ?

Ou avec COALESCE() :

UPDATE name 
SET one=?,
    two=COALESCE(two, ?),
    three=? 
WHERE id = ?

0voto

Serg Points 7780

Cas d'utilisation

UPDATE name 
SET one=?,two=case when two is null or two = '' then ? else two end, three=? 
WHERE id = ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X