Rumah > pangkalan data > tutorial mysql > Bagaimanakah CTE PostgreSQL Boleh Mengendalikan Berbilang INSERT dengan Cekap dengan RETURNING untuk Kemas Kini Berbilang Jadual?

Bagaimanakah CTE PostgreSQL Boleh Mengendalikan Berbilang INSERT dengan Cekap dengan RETURNING untuk Kemas Kini Berbilang Jadual?

Mary-Kate Olsen
Lepaskan: 2025-01-02 14:05:40
asal
973 orang telah melayarinya

How Can PostgreSQL's CTEs Efficiently Handle Multiple INSERTs with RETURNING for Multi-Table Updates?

Berbilang INSERT...RETURNING untuk Kemas Kini Berbilang Jadual dalam PostgreSQL

Memasukkan data ke dalam berbilang jadual anak sambil merujuk data yang baru dimasukkan daripada jadual induk boleh menjadi tugas yang mencabar. Dalam konteks ini, PostgreSQL menyediakan penyelesaian yang berkuasa menggunakan ungkapan jadual biasa (CTEs) yang mengubah suai data.

Pada mulanya, kami boleh mendapatkan user_id bagi baris yang baru dimasukkan dalam jadual induk menggunakan klausa RETURNING:

INSERT INTO table1 (default,'johnee','john','smith',default) RETURNING userid;
Salin selepas log masuk

Untuk melaksanakan berbilang INSERT, kami boleh menggunakan CTE pengubahsuai data sebagai berikut:

WITH ins1 AS (
   INSERT INTO table1 (username, name, surname)
   VALUES ('johnee','john','smith')
   RETURNING user_id
   )
, ins2 AS (
   INSERT INTO table2 (user_id, password)
   SELECT ins1.user_id, 'secret'
   FROM ins1
   )
INSERT INTO table3 (user_id, adress, city, phone)
SELECT ins1.user_id, ...
FROM ins1
RETURNING user_id;
Salin selepas log masuk

Dalam kod ini, ins1 CTE melaksanakan INSERT ke dalam jadual1 dan mengembalikan user_id. CTE ins2 kemudian menggunakan user_id daripada ins1 untuk memasukkan data ke dalam jadual2. Akhir sekali, INSERT ketiga menggunakan user_id daripada ins1 untuk memasukkan data ke dalam jadual3, secara pilihan mengembalikan user_id yang terhasil.

Dengan menggunakan CTE pengubahsuai data, kami boleh merantai berbilang INSERT dengan cekap dan memastikan data yang baru dimasukkan dalam anak jadual mengekalkan perhubungan yang diperlukan dengan jadual induk.

Atas ialah kandungan terperinci Bagaimanakah CTE PostgreSQL Boleh Mengendalikan Berbilang INSERT dengan Cekap dengan RETURNING untuk Kemas Kini Berbilang Jadual?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan