Konflik PostgreSQL: Mengurus Konflik Merentasi Berbilang Lajur
Klausa ON CONFLICT
PostgreSQL memudahkan penyelesaian konflik semasa INSERT
pernyataan. Walaupun pada mulanya direka untuk kekangan satu lajur, ia mudah dilanjutkan untuk mengendalikan kekangan unik yang merangkumi berbilang lajur.
Kuncinya ialah mencipta indeks unik yang merangkumi semua lajur yang berkaitan. Ini membolehkan ON CONFLICT
mengurus konflik dengan berkesan berdasarkan gabungan berbilang lajur ini.
Sebagai contoh, jika jadual mempunyai lajur col1
dan col2
, setiap satu unik secara individu tetapi memerlukan keunikan gabungan, satu lajur ON CONFLICT
tidak mencukupi. Penyelesaiannya? Buat indeks unik berbilang lajur:
<code class="language-sql">CREATE UNIQUE INDEX idx_table_col1_col2 ON table (col1, col2);</code>
Kini, klausa ON CONFLICT
boleh diubah suai:
<code class="language-sql">INSERT INTO table (col1, col2, col3) VALUES ('value1', 'value2', 'value3') ON CONFLICT (col1, col2) DO UPDATE SET col3 = EXCLUDED.col3;</code>
Penyataan INSERT
yang disemak ini memanfaatkan indeks berbilang lajur. Jika konflik timbul (gabungan col1
dan col2
pendua), bahagian DO UPDATE
mengemas kini hanya col3
dengan nilai baharu daripada baris EXCLUDED
.
Pendekatan ini meningkatkan fleksibiliti dalam pengendalian konflik dan mengukuhkan integriti data, terutamanya apabila berurusan dengan set data dan perhubungan yang kompleks.
Atas ialah kandungan terperinci Bagaimanakah Klausa ON CONFLICT PostgreSQL Boleh Mengendalikan Konflik Merentasi Berbilang Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!