Sep
18

MySQL : Comment effectuer un toggle sur un champ ?

Author Nico    Category SQL     Tags , , ,

Petite astuce rapide.

Mettons-nous en situation. Nous avons une table utilisateur avec un champ actif qui peut contenir les valeurs 1 ou 0 selon que l’utilisateur est actif ou pas.

Nous souhaitons, via une requête SQL, inverser l’état de ce champ sans faire de test en programmation. Voici comment faire.

Edit (19/09/2011) : Clément propose une solution bien meilleure que celle-ci dans les commentaires en ce qui concerne des champs de type booléen.

UPDATE utilisateur SET actif = IF(actif = 1, 0, 1);

En français : « Si actif est égal à 1, alors actif est mis à jour avec la valeur 0n sinon, actif est mis à jour avec la valeur 1 ».

Vous me direz qu’on peut tout-à-fait faire ça en programmation et que ça ne change pas grand chose. C’est vrai, mais :

  1. ça ne fait pas de mal de mieux connaître le langage SQL
  2. cette astuce est bien utile quand on manipule des données en ligne de commande, dans la console MySQL

 



2 Comments to “MySQL : Comment effectuer un toggle sur un champ ?”

  • Adelante Web 19 septembre 2011 à 9 h 31 min

    Effectivement je n’utilise pas assez souvent cette synthaxe. Même si dans le cas de booleans celle-ci convient peut-être mieux?

    UPDATE utilisateur SET actif = NOT(actif);

  • Nico 19 septembre 2011 à 19 h 54 min

    Tout à fait !
    Merci pour cette précision. Ta solution est d’ailleurs bien meilleure que la mienne. Je m’empresse de corriger le billet en ce sens.

Poster un commentaire

Edito

Bienvenue sur Mémorandom.

Mémorandom est le blog de 2 développeurs web, Appo et Nico.

Vous y trouverez des informations sur différents domaines touchant de près ou de loin au développement web

Tutoriels Yii Framework

Nos derniers articles

Blogs Dev

Liens

Étiquettes