Rumah >pangkalan data >tutorial mysql >Bagaimana Multi-Column RETURNING Boleh Meningkatkan Sisipan PostgreSQL Merentasi Berbilang Jadual?

Bagaimana Multi-Column RETURNING Boleh Meningkatkan Sisipan PostgreSQL Merentasi Berbilang Jadual?

Linda Hamilton
Linda Hamiltonasal
2025-01-01 07:47:09639semak imbas

How Can Multi-Column RETURNING Enhance PostgreSQL Inserts Across Multiple Tables?

Menggunakan Multi-Column RETURNING untuk Sisipan PostgreSQL yang Cekap

Dalam dunia pengurusan data, keupayaan untuk melakukan berbilang sisipan dengan satu RETURNING klausa boleh menyelaraskan operasi dan meningkatkan kecekapan. Artikel ini menyelidiki selok-belok operasi berbilang sisipan dengan PostgreSQL 9.3, mempamerkan cara memasukkan data dengan lancar ke dalam berbilang jadual anak sambil mendapatkan ID yang baru dijana.

Senario melibatkan tiga jadual:

  • jadual1 (ibu bapa): user_id, nama pengguna, nama, nama keluarga, emp_date
  • table2 (child of table1): pass_id, user_id, password
  • table3 (child of table1): user_dt_id, user_id, alamat, bandar, telefon

Tugas di tangan adalah untuk memasukkan data ke dalam jadual1 dan pada masa yang sama mengisi lajur user_id dalam jadual2 dan jadual3 dengan id_pengguna yang baru dijana.

Untuk mencapainya, kami menggunakan Ungkapan Jadual Biasa (CTE) yang mengubah suai data. CTE membolehkan kami menggabungkan berbilang pernyataan SQL ke dalam satu unit, memperkemas proses pemasukan. Berikut ialah pecahan terperinci pelaksanaan CTE:

WITH ins1 AS (  -- Insert into 'table1'
   INSERT INTO table1 (username, name, surname)
   VALUES ('johnee', 'john', 'smith')
   RETURNING user_id
   ),
ins2 AS (  -- Insert into 'table2' with 'user_id' from 'ins1'
   INSERT INTO table2 (user_id, password)
   SELECT ins1.user_id, 'secret'
   FROM ins1  -- No need to return anything here
   )
INSERT INTO table3 (user_id, adress, city, phone)  -- Insert into 'table3' with 'user_id' from 'ins1'
SELECT ins1.user_id, ...
FROM ins1
RETURNING user_id;

Butiran pelaksanaan utama:

  • Senarai definisi lajur untuk penyataan INSERT disyorkan untuk mengelakkan potensi isu yang berpunca daripada perubahan dalam struktur jadual .
  • Nilai DEFAULT berlebihan ditinggalkan, membolehkan ringkasan dan cekap kod.
  • Klausa RETURNING terakhir mendapatkan semula user_id daripada operasi INSERT terakhir, yang biasanya sejajar dengan user_id daripada jadual3.

Ringkasnya, menggunakan multi-insert dengan RETURNING dalam PostgreSQL membenarkan sisipan satu kelompok merentas berbilang jadual, mengurangkan kerumitan dan mengoptimumkan prestasi. CTE yang mengubah suai data menyediakan cara yang mudah untuk mencapai matlamat ini, menawarkan penyelesaian yang sangat dipercayai dan cekap untuk aliran kerja pemasukan data yang kompleks.

Atas ialah kandungan terperinci Bagaimana Multi-Column RETURNING Boleh Meningkatkan Sisipan PostgreSQL Merentasi Berbilang Jadual?. 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