Rumah >pangkalan data >tutorial mysql >Mengapa PostgreSQL Membuang 'Tiada Kekangan Unik untuk 'bar' Jadual Rujukan' dan Bagaimana Saya Boleh Membetulkannya?
Menyahkod Ralat PostgreSQL: "Tiada Kekangan Unik untuk 'bar' Jadual Rujukan"
Pengguna PostgreSQL 9.1 sering menghadapi ralat yang membingungkan ini apabila membina jadual yang saling berkaitan: "tidak ada kekangan unik padanan kunci yang diberikan untuk "bar" jadual yang dirujuk." Panduan ini menerangkan punca dan penyelesaiannya.
Ralat biasanya timbul apabila jadual (cth., foo
, bar
, baz
) dipautkan melalui kunci asing. Contohnya, bar
mungkin merujuk foo
menggunakan kunci asing (foo_fk
), dan baz
rujukan bar
menggunakan kunci asing lain (bar_fk
).
Masalahnya terletak dalam jadual bar
. Walaupun indeks unik mungkin wujud pada lajur gabungan (seperti foo_fk
dan name
), satu kekangan unik tiada pada lajur name
itu sendiri.
Pertimbangkan senario ini: Dua baris dalam bar
berkongsi nilai name
yang sama (mis., 'ams'). Percubaan untuk memasukkan baris ke dalam baz
merujuk 'ams' dalam bar_fk
mewujudkan kesamaran. PostgreSQL tidak dapat menentukan baris bar
yang betul, mengakibatkan ralat.
Penyelesaian: Tegakkan Keunikan
Pembetulan adalah mudah: tambahkan kekangan unik pada lajur name
dalam jadual bar
. Gunakan arahan SQL ini:
<code class="language-sql">ALTER TABLE bar ADD UNIQUE (name);</code>
Ini memastikan setiap baris bar
mempunyai name
yang unik, menyelesaikan kekaburan dan membolehkan perhubungan utama asing yang berjaya. Struktur jadual anda kini akan berfungsi seperti yang dimaksudkan.
Atas ialah kandungan terperinci Mengapa PostgreSQL Membuang 'Tiada Kekangan Unik untuk 'bar' Jadual Rujukan' dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!