MySQL에서 InnoDB 테이블은 외래 키 제약 조건 확인을 지원합니다. InnoDB 스토리지 엔진 및 외래 주요 차이점을 참조하십시오. 외래 키 정의는 다음과 같은 조건의 적용을 받습니다. 외래 키는 데이터의 일관성과 무결성을 자동으로 유지하는 데 도움이 되는 참조 무결성을 적용합니다. 예를 들어 존재하지 않는 고객에 대한 주문을 만들 수 없습니다. 외래 키 제약 조건은 테이블의 데이터를 제거(ON DELETE) 또는 업데이트(ON UPDATE) 테이블 행 행 데이터 업데이트 시 일관되게 유지하는 데 사용됩니다. 외래 키는 새로 삽입된 레코드의 무결성을 확실히 보장할 수 있습니다. 그러나 REFERENCES 절에 명명 된 테이블에서 레코드가 삭제되면 어떻게됩니까? 이 값을 외래 키로 사용하는 하위 테이블의 모든 레코드는 어떻게 됩니까? 외래 키는 좋은 데이터베이스 관리에 필수적입니다. 이제 사용의 고급 예제를 살펴보는 데 관심이 있으시면 여기에서 외래 키 절 예제 섹션을 참조하십시오. 외래 키 관계에는 중앙 데이터 값을 포함하는 상위 테이블과 상위를 가리키는 동일한 값이 있는 하위 테이블이 포함됩니다. 외래 KEY 절은 자식 테이블에 지정됩니다.
상위 테이블과 자식 테이블은 동일한 저장소 엔진을 사용해야 합니다. 임시 테이블이 아니어야 합니다. 테이블을 외래 키와 연결할 때 다음 세 가지 제약 조건을 염두에 두어야 합니다. 이 자습서에서는 MySQL 외국 키에 대해 많이 다루었습니다. 또한 MySQL에서 외국 키를 효과적으로 관리할 수 있는 매우 편리한 문을 소개했습니다. 올바른 사용자 및 암호 인수와 mysql 명령을 입력 하 여 MySQL 콘솔에 이동 합니다. 필요한 경우 “man mysql”을 입력하여 자세한 정보를 얻으십시오. 또한 여기에 표시된 구문을 사용하여 ALTER TABLE을 사용하여 외래 키를 삭제할 수도 있습니다.
알고리즘 = INPLACE하지만 테이블을 변경에 대한 지원되지 않는 남아 … 알고리즘=복사. 삭제는 빌린 테이블로 계단식으로 배열되므로 모든 John의 참조가 제거됩니다. 또한 가져오기 작업의 속도를 높입니다. 외외_key_checks를 0으로 설정하면 로드 데이터 및 테이블 변경 작업 중에 외래 키 제약 조건을 무시하는 데도 유용할 수 있습니다. 그러나 foreign_key_checks = 0이더라도 MySQL은 열이 일치하지 않는 열 형식을 참조하는 외래 키 제약 조건을 만드는 것을 허용하지 않습니다. 또한 테이블에 외래 키 제약 조건이 있는 경우 ALTER TABLE을 사용하여 테이블을 변경하여 다른 저장소 엔진을 사용할 수 없습니다. 저장소 엔진을 변경하려면 먼저 외래 키 제약 조건을 삭제해야 합니다. 외래 키 열의 인덱스 접두사는 지원되지 않습니다.
그 결과 해당 열의 인덱스에 항상 접두사 길이가 포함되어야 하므로 BLOB 및 TEXT 열을 외래 키에 포함할 수 없습니다. 외래 키는 자체 참조일 수 있습니다(동일한 테이블을 참조). ALTER TABLE을 사용하여 테이블에 외래 키 제약 조건을 추가하는 경우 먼저 필요한 인덱스를 만들어야 합니다. 둘째, 다음은 nodes 테이블로 다시 연결되는 node_id라는 외래 키가 있는 logfile_records라는 테이블입니다. 외래 키는 참조 무결성을 보장하는 데 도움이 됩니다. MySQL 4.0.8 이상에서는 ON DELETE 절과 유사한 방식으로 작동하는 ON UPDATE 절을 사용하도록 허용하여 업데이트에 대한 이러한 자동 작업을 수행할 수도 있습니다. 예를 들어, 외래 키 정의에 ON UPDATE CASCADE 절을 추가하면 기본 테이블(외래 키 검사에 참조되는 테이블)에서 레코드가 업데이트될 때 현재 테이블의 외래 키 값을 사용하는 모든 레코드도 해당 레코드가 되어야 한다는 것을 MySQL에 알 수 있습니다. 시스템의 일관성을 보장하기 위해 새 값으로 자동으로 업데이트됩니다.