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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿