PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Многоредови актуализации на PostgreSQL в Node.js

Примерът по-долу е базиран на библиотеката pg-promise и нейния метод 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);

Този метод за генериране на многоредови актуализации може да се характеризира като:

  • много бързо, тъй като разчита на тип ColumnSet, който внедрява интелигентно кеширане за генериране на заявки
  • напълно безопасно, тъй като всички типове данни преминават през механизма за форматиране на заявките на библиотеката, за да се уверим, че всичко е форматирано и екранирано правилно.
  • много гъвкав, поради усъвършенствания синтаксис на ColumnConfig, поддържан за дефиницията на колоните.
  • много лесен за използване, поради опростения интерфейс, реализиран от pg-promise.

Имайте предвид, че използваме ? пред колона id за да посочи, че колоната е част от условието, но не трябва да се актуализира. За пълен синтаксис на колони вижте структурата на клас Column и ColumnConfig.

Свързан въпрос:Многоредова вложка с pg-promise.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL - деактивиране на ограниченията

  2. Какво означава грешка при импортиране:Символът не е намерен:_PQencryptPasswordConn и как да го поправя?

  3. Не може да се създаде заявена услуга [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

  4. Експортиране на PostgreSQL база данни с phpPgAdmin

  5. Анотацията на Spring Data @CreatedDate не работи за мен