ホームページ > データベース > mysql チュートリアル > PostgreSQL が「参照テーブル 'bar' に一意の制約がありません」をスローするのはなぜですか? それを修正するにはどうすればよいですか?

PostgreSQL が「参照テーブル 'bar' に一意の制約がありません」をスローするのはなぜですか? それを修正するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-08 22:13:07
オリジナル
501 人が閲覧しました

Why Does PostgreSQL Throw

PostgreSQL エラーのデコード: 「参照テーブル 'bar' に一意の制約がありません」

PostgreSQL 9.1 ユーザーは、相互接続されたテーブルを構築するときに、「参照テーブル "bar" に指定されたキーに一致する一意の制約がありません。」という、この厄介なエラーに遭遇することがよくあります。このガイドでは、根本的な原因と解決策について説明します。

このエラーは通常、テーブル (foobarbaz など) が外部キーを介してリンクされている場合に発生します。 たとえば、bar は外部キー (foo) を使用して foo_fk を参照し、baz は別の外部キー (bar) を使用して bar_fk を参照する場合があります。

問題は

テーブル内にあります。 一意のインデックスは結合された列 (barfoo_fk など) に存在する可能性がありますが、name 列自体には一意の制約がありません。name

次のシナリオを考えてみましょう:

内の 2 つの行が同じ bar 値 (例: 'ams') を共有します。 name の 'ams' を参照する行を baz に挿入しようとすると、あいまいさが生じます。 PostgreSQL は正しい bar_fk 行を判断できないため、エラーが発生します。bar

解決策: 一意性を強制する

修正は簡単です。

テーブルの name 列に一意制約を追加します。 次の SQL コマンドを使用します:bar

<code class="language-sql">ALTER TABLE bar ADD UNIQUE (name);</code>
ログイン後にコピー
これにより、各

行が確実に一意の bar を持つようになり、曖昧さが解決され、外部キー関係が成功するようになります。 これで、テーブル構造が意図したとおりに機能するようになります。name

以上がPostgreSQL が「参照テーブル 'bar' に一意の制約がありません」をスローするのはなぜですか? それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート