web-dev-qa-db-fra.com

Mettre à jour plusieurs lignes en séquelle avec différentes conditions

J'essaie d'exécuter une commande de mise à jour avec séquencement sur les lignes d'une base de données postgres. J'ai besoin de pouvoir mettre à jour plusieurs lignes qui ont des conditions différentes avec la même valeur.

Par exemple, supposons que j'ai une table utilisateur qui contient les champs suivants:

  • Identifiant
  • Prénom
  • Nom de famille
  • Le sexe
  • Emplacement
  • créé à

Supposons que j'ai 4 enregistrements dans ce tableau, je souhaite mettre à jour les enregistrements avec ID - 1 et 4 avec un nouvel emplacement, par exemple le Nigeria.

Quelque chose comme ça: SET field1 = 'foo' WHERE id = 1, SET field1 = 'bar' WHERE id = 2

Comment puis-je y parvenir avec séquelle?

6
proton

Vous pouvez mettre à jour plusieurs enregistrements à la fois, mais les mêmes mises à jour pour tous les enregistrements, si vous souhaitez effectuer des mises à jour différentes pour différentes conditions, vous devez exécuter cette fois plusieurs

Exemple:

Cela mettra à jour fields1 à foo, où id vaut 1 ou 4

let ids = [1,4];
Your_model.update({ field1 : 'foo' },{ where : { id : ids }}); 

Cela mettra à jour field1 à foo si id vaut 1 et field1 à barrer si id est 4

Your_model.update({ field1 : 'foo' },{ where : { id : 1 }});
Your_model.update({ field1 : 'bar' },{ where : { id : 4 }}); 

J'espère que cela effacera tous vos doutes.

4
Vivek Doshi