Rumah >pangkalan data >tutorial mysql >Bagaimanakah CTE PostgreSQL Boleh Mengendalikan Berbilang INSERT dengan Cekap dengan RETURNING untuk Kemas Kini Berbilang Jadual?
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;
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;
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!