PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Aktualizacje wielowierszowe PostgreSQL w Node.js

Poniższy przykład oparty jest na bibliotece pg-promise i jej metodzie 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);

Ta metoda generowania aktualizacji wielowierszowych może być scharakteryzowana jako:

  • bardzo szybko, ponieważ opiera się na typie ColumnSet, który implementuje inteligentne buforowanie do generowania zapytań
  • całkowicie bezpieczne, ponieważ wszystkie typy danych przechodzą przez mechanizm formatowania zapytań biblioteki, aby upewnić się, że wszystko jest sformatowane i poprawnie escapowane.
  • bardzo elastyczny, dzięki zaawansowanej składni ColumnConfig obsługiwanej dla definicji kolumn.
  • bardzo łatwy w użyciu, dzięki uproszczonemu interfejsowi zaimplementowanemu przez pg-promise.

Zauważ, że używamy ? przed kolumną id aby wskazać, że kolumna jest częścią warunku, ale nie ma być aktualizowana. Aby uzyskać pełną składnię kolumn, zobacz strukturę Class Column i ColumnConfig.

Powiązane pytanie:Wkładka wielorzędowa z obietnicą pg.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Średnia ruchoma na podstawie znaczników czasu w PostgreSQL

  2. Jak odblokować możliwe blokady rzędów w Postgresie?

  3. Ograniczenie nakładania się dat Postgres

  4. Kolejka zadań jako tabela SQL z wieloma konsumentami (PostgreSQL)

  5. Zarządzanie i monitorowanie bazy danych dla PostgreSQL 12