sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL-opdateringer med flere rækker i Node.js

Eksemplet nedenfor er baseret på biblioteket pg-promise og dets metode 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);

Denne metode til at generere opdateringer med flere rækker kan karakteriseres som:

  • meget hurtigt, da det er afhængigt af typen ColumnSet, der implementerer smart caching til generering af forespørgsler
  • fuldstændig sikker, da alle datatyper går gennem bibliotekets forespørgselsformateringsmaskine for at sikre, at alt er formateret og escaped korrekt.
  • meget fleksibel på grund af avanceret ColumnConfig-syntaks, der understøttes for kolonnedefinitionen.
  • meget let at bruge på grund af den forenklede grænseflade implementeret af pg-promise.

Bemærk, at vi bruger ? foran kolonne id for at angive, at kolonnen er en del af betingelsen, men ikke for at blive opdateret. For komplet kolonnesyntaks se klasse Column og ColumnConfig struktur.

Relateret spørgsmål:Multi-row insert med pg-promise.



  1. Spar tid ved at køre Microsoft Access-rapporter ved hjælp af filtre i layoutvisning

  2. Indsættelse af et billede fra Oracle i SQL Server

  3. Læs og importer CSV-filer i Oracle PL/SQL effektivt

  4. Udfør SQL fra batchfil