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