sql >> Databáze >  >> RDS >> PostgreSQL

Víceřádkové aktualizace PostgreSQL v Node.js

Níže uvedený příklad je založen na knihovně pg-promise a její metodě 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);

Tento způsob generování víceřádkových aktualizací lze charakterizovat jako:

  • velmi rychlé, protože se spoléhá na typ ColumnSet, který implementuje inteligentní ukládání do mezipaměti pro generování dotazů
  • zcela bezpečné, protože všechny datové typy procházejí modulem pro formátování dotazů knihovny, aby bylo zajištěno, že je vše správně naformátováno a zakódováno.
  • velmi flexibilní díky pokročilé syntaxi ColumnConfig podporované pro definici sloupců.
  • velmi snadné použití díky zjednodušenému rozhraní implementovanému pg-promise.

Všimněte si, že používáme ? před sloupec id k označení, že sloupec je součástí podmínky, ale nemá být aktualizován. Úplnou syntaxi sloupců naleznete ve struktuře třídy Column a ColumnConfig.

Související otázka:Víceřádková vložka s pg-promise.



  1. SQL, vytvoření tabulky

  2. Jak přidat výchozí omezení do existujících sloupců v tabulce SQL Server - SQL Server / Výukový program TSQL, část 91

  3. MySQL – ORDER BY hodnot v IN()

  4. Průvodce pro pochopení vzorců škálování databáze