Rumah > pangkalan data > tutorial mysql > Bolehkah Klausa ON CONFLICT PostgreSQL Mengendalikan Berbilang Lajur Berindeks Unik sebagai Sasaran Konflik?

Bolehkah Klausa ON CONFLICT PostgreSQL Mengendalikan Berbilang Lajur Berindeks Unik sebagai Sasaran Konflik?

Barbara Streisand
Lepaskan: 2025-01-12 17:55:49
asal
918 orang telah melayarinya

Can PostgreSQL's ON CONFLICT Clause Handle Multiple Unique-Indexed Columns as Conflict Targets?

Fasal ON CONFLICT PostgreSQL: Mengurus Konflik Merentasi Berbilang Lajur Unik

Klausa ON CONFLICT PostgreSQL yang berkuasa memudahkan pengendalian sisipan baris pendua, membenarkan kemas kini dan bukannya ralat. Timbul persoalan utama: bolehkah klausa ini mengurus konflik yang melibatkan berbilang lajur yang diindeks secara unik?

Keperluan untuk mengemas kini lajur tambahan apabila konflik berlaku merentas berbilang lajur unik memerlukan penyelesaian melangkaui sasaran konflik satu lajur. Penyelesaiannya terletak pada mentakrifkan indeks unik komposit yang merangkumi lajur yang berkaitan.

Begini cara ia berfungsi: Katakan kita mempunyai jadual dengan kekangan unik pada kedua-dua id dan name:

<code class="language-sql">CREATE TABLE test (id INT, name TEXT, UNIQUE (id), UNIQUE (name));</code>
Salin selepas log masuk

Perhatikan bahawa mencipta indeks unik yang berasingan pada id dan name secara fungsinya setara dengan mencipta satu kekangan unik UNIQUE (id, name). Untuk mengendalikan konflik berdasarkan sama ada id atau name (atau kedua-duanya), kami menggunakan indeks komposit dalam klausa ON CONFLICT:

<code class="language-sql">INSERT INTO test (id, name) ON CONFLICT (id, name) DO UPDATE SET ...;</code>
Salin selepas log masuk

Pendekatan ini membolehkan pangkalan data mengenal pasti konflik dengan cekap berdasarkan nilai gabungan id dan name, mencetuskan tindakan DO UPDATE seperti yang diperlukan.

Yang penting, klausa ON CONFLICT bergantung pada kewujudan kekangan (atau indeks) unik yang meliputi semua lajur sasaran konflik yang ditentukan. Percubaan untuk menggunakan ON CONFLICT tanpa kekangan sedemikian akan mengakibatkan ralat pangkalan data.

Atas ialah kandungan terperinci Bolehkah Klausa ON CONFLICT PostgreSQL Mengendalikan Berbilang Lajur Berindeks Unik sebagai Sasaran Konflik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan