Menentukan berbilang sasaran konflik dalam klausa ON CONFLICT PostgreSQL
Jadual PostgreSQL selalunya mengandungi berbilang lajur yang ditetapkan sebagai unik. Walaupun klausa ON CONFLICT membenarkan pengesanan konflik berdasarkan sasaran konflik tunggal, ia mungkin terhad apabila mengurus jadual dengan berbilang lajur unik.
Untuk mengatasi had ini, PostgreSQL menyediakan penyelesaian mudah: cipta indeks unik yang merangkumi berbilang lajur. Dengan melakukan ini, anda secara berkesan menentukan berbilang sasaran konflik dalam klausa ON CONFLICT.
Contoh:
Pertimbangkan jadual dengan dua lajur unik col1 dan col2. Anda boleh mencipta indeks unik pada dua lajur ini menggunakan arahan berikut:
<code class="language-sql">CREATE UNIQUE INDEX idx_table_col1_col2 ON table(col1, col2);</code>
Anda kini boleh memanfaatkan indeks ini untuk mengendalikan konflik yang melibatkan dua lajur ini dalam klausa ON CONFLIT:
<code class="language-sql">INSERT INTO table ... ON CONFLICT (col1, col2) DO UPDATE SET ...</code>
Apabila konflik berlaku, PostgreSQL akan menyemak nilai col1 dan col2 baris baharu terhadap baris sedia ada untuk memastikan keunikan. Jika konflik dikesan, klausa DO UPDATE akan dicetuskan, membolehkan anda mengemas kini lajur lain mengikut keperluan.
Nota: Selain indeks unik, PostgreSQL juga menyokong kekangan pengecualian. Kekangan unik menghalang nilai pendua untuk lajur tertentu atau set lajur, manakala kekangan kecualikan melangkah lebih jauh dan mengecualikan baris yang memenuhi syarat tertentu. Ini berguna dalam situasi di mana anda ingin menguatkuasakan peraturan integriti data yang lebih kompleks.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Konflik dengan Berbilang Lajur Unik dalam Klausa ON CONFLICT PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!