Memasukkan Berbilang Baris dengan CTE PostgreSQL
Andaikan anda mempunyai pangkalan data hubungan dengan tiga jadual: jadual1, jadual2 dan jadual3. Jadual jadual1 menyimpan maklumat pengguna umum, manakala jadual jadual2 dan jadual3 mengandungi data tambahan seperti kata laluan dan alamat. Semasa anda menambah pengguna baharu dalam jadual1, anda mahu memasukkan ID pengguna dan data unik lain secara serentak ke dalam jadual anak table2 dan table3.
Postgres 9.3 CTE pengubahsuai data menyediakan penyelesaian kepada senario ini. CTE membolehkan anda merantai berbilang operasi INSERT dengan cekap.
Berikut ialah cara menggunakan CTE pengubahsuai data untuk menyelesaikan tugas anda:
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 -- Nothing to return here ) INSERT INTO table3 (user_id, address, city, phone) SELECT ins1.user_id, ..., ... FROM ins1 RETURNING user_id;
Pecahan CTE:
Amalan Terbaik:
Atas ialah kandungan terperinci Bagaimanakah CTE PostgreSQL Boleh Memasukkan Berbilang Baris Merentasi Berbilang Jadual dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!