sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL-updates met meerdere rijen in Node.js

Het onderstaande voorbeeld is gebaseerd op bibliotheek pg-promise en zijn methode helpers.update:

// library initialization, usually placed in its own module:
const pgp = require('pg-promise')({
    capSQL: true // capitalize all generated SQL
});

const db = pgp(/*your connection details*/);

// records to be updated:
const updateData = [
    {id: 1, value: 1234},
    {id: 2, value: 5678},
    {id: 3, value: 91011}
];

// declare your ColumnSet once, and then reuse it:
const cs = new pgp.helpers.ColumnSet(['?id', 'value'], {table: 'fit_ratios'});

// generating the update query where it is needed:
const update = pgp.helpers.update(updateData, cs) + ' WHERE v.id = t.id';
//=> UPDATE "fit_ratios" AS t SET "value"=v."value"
//   FROM (VALUES(1,1234),(2,5678),(3,91011))
//   AS v("id","value") WHERE v.id = t.id

// executing the query:
await db.none(update);

Deze methode voor het genereren van updates met meerdere rijen kan worden gekarakteriseerd als:

  • erg snel, omdat het afhankelijk is van het type ColumnSet dat slimme caching implementeert voor het genereren van query's
  • volkomen veilig, aangezien alle gegevenstypen door de query-opmaak-engine van de bibliotheek gaan om ervoor te zorgen dat alles correct is opgemaakt en ontsnapt.
  • zeer flexibel, dankzij de geavanceerde ColumnConfig-syntaxis die wordt ondersteund voor de kolomdefinitie.
  • zeer gemakkelijk te gebruiken, dankzij de vereenvoudigde interface geïmplementeerd door pg-promise.

Merk op dat we ? . gebruiken voor kolom id om aan te geven dat de kolom deel uitmaakt van de voorwaarde, maar niet moet worden bijgewerkt. Zie voor de volledige kolomsyntaxis class Column en ColumnConfig-structuur.

Gerelateerde vraag:Meerdere rijen invoegen met pg-promise.



  1. Variabele gebruiken in SQL LIKE-instructie

  2. WIDTH_BUCKET() Functie in Oracle

  3. dit is fout ORA-12154:TNS:kon de opgegeven verbindings-ID niet oplossen?

  4. Online schema-upgrade in MySQL Galera-cluster met behulp van de RSU-methode