Rumah > pangkalan data > tutorial mysql > Mengapa PostgreSQL Membuang 'Tiada Kekangan Unik untuk 'bar' Jadual Rujukan' dan Bagaimana Saya Boleh Membetulkannya?

Mengapa PostgreSQL Membuang 'Tiada Kekangan Unik untuk 'bar' Jadual Rujukan' dan Bagaimana Saya Boleh Membetulkannya?

Mary-Kate Olsen
Lepaskan: 2025-01-08 22:13:07
asal
567 orang telah melayarinya

Why Does PostgreSQL Throw

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:

ALTER TABLE bar ADD UNIQUE (name);
Salin selepas log masuk

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!

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