PostgreSQL 9.1 外部キー参照の「未解決の一意制約」エラーを解決する
PostgreSQL 9.1 で外部キー参照を含むテーブル構造を作成すると、予期しないエラーが発生する場合があります。このエラーは、矛盾した制約構成が原因で発生します。
問題の SQL コードには、foo、bar、baz の 3 つのテーブルの作成が含まれています。 foo テーブルには name カラムに主キーがありますが、bar テーブルでは foo_fk カラムを foo(name) を参照する外部キーとして定義します。ただし、エラー メッセージは、バー テーブルで参照されている名前列に一意の制約がないことを示しています。
この問題を理解するには、次の例に示すように、棒テーブル内の複数の行が同じ名前の値を共有するシナリオを考えてみましょう。
INSERT INTO bar (foo_fk, name) VALUES ('alice', 'ams'); INSERT INTO bar (foo_fk, name) VALUES ('bob', 'ams');ここで、baz テーブルに行を挿入し、bar テーブル内のあいまいな ams 値を参照しようとすると、PostgreSQL はターゲット行を一意に識別できません。このあいまいさは、PostgreSQL が外部キーによってバー テーブル内のどの行を参照すべきかを判断できないために発生します。
解決策は、バーテーブルの名前列の一意性を強制することです。 name 列に一意の制約を追加することで、bar テーブルの各行が異なる名前の値を持つようになり、曖昧さがなくなり、PostgreSQL が参照される行を一意に識別できるようになります。
必要な制約を含む修正された SQL コードは次のとおりです:
CREATE TABLE foo ( name VARCHAR(256) PRIMARY KEY ); CREATE TABLE bar ( pkey SERIAL PRIMARY KEY, foo_fk VARCHAR(256) NOT NULL REFERENCES foo(name), name VARCHAR(256) NOT NULL, UNIQUE (name) -- 添加唯一约束 ); CREATE TABLE baz( pkey SERIAL PRIMARY KEY, bar_fk VARCHAR(256) NOT NULL REFERENCES bar(name), name VARCHAR(256) );この一意制約により、PostgreSQL はテーブル構造を正常に作成し、「指定されたキーに一致する一意制約がありません」エラーを回避できるようになりました。
以上がPostgres 9.1 の外部キー参照が「一意制約」エラーで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、MySQLのAlter Tableステートメントを使用して、列の追加/ドロップ、テーブル/列の名前の変更、列データ型の変更など、テーブルを変更することについて説明します。

記事では、証明書の生成と検証を含むMySQL用のSSL/TLS暗号化の構成について説明します。主な問題は、セルフ署名証明書のセキュリティへの影響を使用することです。[文字カウント:159]

記事では、MySQLで大規模なデータセットを処理するための戦略について説明します。これには、パーティション化、シャード、インデックス作成、クエリ最適化などがあります。

記事では、MySQLワークベンチやPHPMyAdminなどの人気のあるMySQL GUIツールについて説明し、初心者と上級ユーザーの機能と適合性を比較します。[159文字]

この記事では、ドロップテーブルステートメントを使用してMySQLのドロップテーブルについて説明し、予防策とリスクを強調しています。これは、バックアップなしでアクションが不可逆的であることを強調し、回復方法と潜在的な生産環境の危険を詳述しています。

この記事では、クエリパフォーマンスを強化するために、PostgreSQL、MySQL、MongoDBなどのさまざまなデータベースでJSON列にインデックスの作成について説明します。特定のJSONパスのインデックス作成の構文と利点を説明し、サポートされているデータベースシステムをリストします。

記事では、外部キーを使用してデータベース内の関係を表すことで、ベストプラクティス、データの完全性、および避けるべき一般的な落とし穴に焦点を当てています。

記事では、準備されたステートメント、入力検証、および強力なパスワードポリシーを使用して、SQLインジェクションおよびブルートフォース攻撃に対するMySQLの保護について説明します。(159文字)


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

Dreamweaver Mac版
ビジュアル Web 開発ツール

ホットトピック



