ホームページ > データベース > mysql チュートリアル > MySQL InnoDB の外部キー制約では NULL 値が許可されますか?

MySQL InnoDB の外部キー制約では NULL 値が許可されますか?

Susan Sarandon
リリース: 2025-01-11 10:07:42
オリジナル
728 人が閲覧しました

Do Foreign Key Constraints in MySQL InnoDB Allow NULL Values?

MySQL InnoDB テーブルの外部キー制約と NULL 値

質問:

列に NULL 値が含まれている場合でも、データベース テーブルの外部キー制約は有効ですか?特に MySQL および InnoDB テーブルのコンテキストでは、NULL 値が発生した場合の外部キー制約の動作はどうなりますか?

答え:

はい、外部キー制約は、外部キー列の値が NULL でない場合にのみ適用できます。これにより、データ管理が柔軟になり、データの整合性が確保されます。

MySQL では、外部キー制約のあるテーブル列に NULL 値が含まれている場合、制約はチェックされません。これは、外部キー列に NULL が含まれる行には親子関係が適用されないことを意味します。

ただし、NULL 以外の値が外部キー列に挿入されると、データベースはその値が参照先テーブルに存在するかどうかを確認します。値が存在しない場合、エラーがスローされ、挿入操作は失敗し、参照整合性が妨げられます。

例:

次の構造を持つ親テーブルと子テーブルを考えてみましょう:

<code class="language-sql">CREATE TABLE parent (id INT NOT NULL, PRIMARY KEY (id));

CREATE TABLE child (id INT NULL, parent_id INT NULL, FOREIGN KEY (parent_id) REFERENCES parent(id));</code>
ログイン後にコピー

次のクエリは、NULL 値を使用した外部キ​​ー制約の動作を示しています。

<code class="language-sql">INSERT INTO child (id, parent_id) VALUES (1, NULL);
-- 查询成功,因为 parent_id 为 NULL。

INSERT INTO child (id, parent_id) VALUES (2, 10);
-- 查询失败,因为没有 id 为 10 的 parent 行。</code>
ログイン後にコピー

これは、外部キー列に NULL 以外の値が含まれている場合にのみ、外部キー制約が適用されることを示します。

以上がMySQL InnoDB の外部キー制約では NULL 値が許可されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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