>데이터 베이스 >MySQL 튜토리얼 >MySQL 외래 키가 NULL 값을 허용할 수 있습니까?

MySQL 외래 키가 NULL 값을 허용할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-11 10:12:41159검색

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인 "child" 테이블에 행을 삽입해 보겠습니다.

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

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