ホームページ > データベース > mysql チュートリアル > MySQL 外部キーは NULL 値を許可できますか?

MySQL 外部キーは NULL 値を許可できますか?

Patricia Arquette
リリース: 2025-01-11 10:12:41
オリジナル
115 人が閲覧しました

Can MySQL Foreign Keys Allow NULL Values?

MySQL 外部キーは NULL 値を許可しますか?

データベーステーブルを設計する際には、データの整合性を確保することが重要です。外部キーを介した他のテーブルの列への参照は、これらの接続を維持する上で重要な役割を果たします。よくある質問は、「外部キーを持つテーブル列は NULL 値を許可しますか?」です。

InnoDB テーブル タイプを使用する 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>
ログイン後にコピー

次に、「parent_id」が NULL である行を「子」テーブルに挿入しましょう。

<code class="language-sql">INSERT INTO child (id, parent_id) VALUES (1, NULL);
-- 查询成功,影响 1 行 (0.01 秒)</code>
ログイン後にコピー

「parent_id」列に NULL 値を指定したため、この挿入操作は成功しました。ただし、「親」テーブルに存在しない非 NULL 値を挿入しようとすると、外部キー制約が適用されるため、エラーが発生します:

<code class="language-sql">INSERT INTO child (id, parent_id) VALUES (2, 1);

-- 错误 1452 (23000):无法添加或更新子行:外键约束失败 (`t/child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))</code>
ログイン後にコピー

この動作により、データの整合性に対する柔軟性と制御が提供されます。データ入力中に一時的な NULL 値を許可しながら、後で外部キー制約を強制することができます。外部キー列の NULL 制約を慎重に管理することで、データの正確性と一貫性を確保できます。

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

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