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