>데이터 베이스 >MySQL 튜토리얼 >MySQL InnoDB의 외래 키 제약 조건은 NULL 값을 허용합니까?

MySQL InnoDB의 외래 키 제약 조건은 NULL 값을 허용합니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-11 10:07:42729검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.