Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimanakah pg-promise boleh mengendalikan sisipan berbilang baris dengan cekap dalam PostgreSQL?

Bagaimanakah pg-promise boleh mengendalikan sisipan berbilang baris dengan cekap dalam PostgreSQL?

Barbara Streisand
Barbara Streisandasal
2024-10-31 01:14:18613semak imbas

How can pg-promise efficiently handle multi-row inserts in PostgreSQL?

Sisipan berbilang baris dengan pg-promise

Memasukkan berbilang baris dalam satu pertanyaan ialah pendekatan yang cekap untuk operasi pukal. Pg-promise menyediakan sokongan lancar untuk sisipan berbilang baris melalui mekanisme berasaskan tatasusunannya.

Sintaks Sisipan Berbilang baris

Untuk memasukkan berbilang baris, anda boleh menentukannya sebagai tatasusunan objek, setiap objek mewakili baris:

const values = [{col_a: 'a1', col_b: 'b1'}, {col_a: 'a2', col_b: 'b2'}];

Untuk menjana pertanyaan sisipan berbilang baris, gunakan pembantu sisipan daripada ruang nama pgp.helpers:

const cs = new ColumnSet(['col_a', 'col_b'], {table: 'tmp'});
const query = insert(values, cs);

Ini menjana pertanyaan berikut:

INSERT INTO "tmp"("col_a","col_b") VALUES('a1','b1'),('a2','b2')

Pelaksanaan Pertanyaan

Anda boleh melaksanakan pertanyaan yang dijana menggunakan kaedah none:

await db.none(query);

Nama SQL Dinamik dan Perlindungan Injeksi SQL

Pg-promise menggunakan ruang letak ($1, $2, dsb.) untuk parameter pertanyaan, bukannya interpolasi rentetan. Pendekatan ini menghalang kelemahan suntikan SQL kerana pustaka membersihkan parameter sebelum membina pertanyaan.

Nota Tambahan

  • Mengembalikan ID Rekod Baharu: Untuk mendapatkan semula ID rekod yang baru dimasukkan, tambahkan id RETURNING pada pertanyaan dan gunakan banyak kaedah untuk melaksanakannya.
  • Pengendalian Ralat: Untuk mengendalikan kemungkinan ralat, bungkus penjanaan pertanyaan dalam fungsi yang boleh membuang pengecualian jika penjanaan gagal.

Ringkasnya, pg-promise menawarkan penyelesaian yang teguh untuk melaksanakan sisipan berbilang baris, memastikan integriti data dan kecekapan prestasi. Gunakan insert helper dan nama SQL dinamik untuk hasil yang optimum.

Atas ialah kandungan terperinci Bagaimanakah pg-promise boleh mengendalikan sisipan berbilang baris dengan cekap dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn