오라클 foreign key 예제

또한 외래 키 제약 조건은 가리키는 테이블에 포함된 값 중 하나여야 하기 때문에 잘못된 데이터가 외래 키 열에 삽입되는 것을 방지합니다. 그런 다음 REFERENCES이라는 단어를 추가한 다음 참조하려는 다른 테이블의 이름을 추가합니다. 위의 예제를 사용하여 직원 테이블을 만들고 부서_id가 부서 테이블을 참조하도록 하려는 경우 이 테이블은 부서 테이블이 됩니다. 다음은 여러 열 외래 키 제약 조건의 예입니다: 마지막으로 테이블 문 만들기에 대괄호를 닫고 세미콜론을 추가합니다. 이제 문을 실행할 준비가 되었습니다. 외래 키는 지정한 이름으로 만들어집니다. 이렇게 하면 덤프 파일에 외래 키에 대해 올바르게 정렬되지 않은 테이블이 포함된 경우 원하는 순서로 테이블을 가져올 수 있습니다. 또한 가져오기 작업의 속도를 높입니다. 외외_key_checks를 0으로 설정하면 로드 데이터 및 테이블 변경 작업 중에 외래 키 제약 조건을 무시하는 데도 유용할 수 있습니다. 그러나 foreign_key_checks = 0이더라도 MySQL은 열이 일치하지 않는 열 형식을 참조하는 외래 키 제약 조건을 만드는 것을 허용하지 않습니다.

또한 테이블에 외래 키 제약 조건이 있는 경우 ALTER TABLE을 사용하여 테이블을 변경하여 다른 저장소 엔진을 사용할 수 없습니다. 저장소 엔진을 변경하려면 먼저 외래 키 제약 조건을 삭제해야 합니다. 이 섹션에서는 외래 키가 참조 무결성을 보장하는 데 어떻게 도움이 되는지 설명합니다. 그런 다음 외래 키가 다른 테이블, 대괄호 내부에서 참조하는 열의 이름을 지정합니다. 직원 및 부서 테이블을 사용하는 경우 이 열은 department_id 열(또는 부서 테이블의 기본 키라고 함)이 됩니다. 외래 키가 포함된 테이블을 자식 테이블이라고 하며 후보 키가 포함된 테이블을 참조된 테이블 또는 상위 테이블이라고 합니다. 이 제한은 KEY 또는 LINEAR KEY로 분할된 NDB 테이블에는 적용되지 않습니다(NDB 저장소 엔진에서 지원하는 유일한 사용자 분할 유형). 이러한 참조는 외부 키 참조를 가지고 있거나 그러한 참조의 대상이 될 수 있습니다.

외래 키와 참조된 키의 해당 열에는 유사한 데이터 형식이 있어야 합니다. 정수 형식의 크기와 기호는 같아야 합니다. 문자열 형식의 길이가 같을 필요는 없습니다. 비이진(문자) 문자열 열의 경우 문자 집합 및 데이터 정렬은 동일해야 합니다. MySQL은 테이블 내의 한 열과 다른 열 간의 외래 키 참조를 지원합니다. (열자체에 대한 외래 키 참조를 가질 수 없습니다.) 이러한 경우 “자식 테이블 레코드”는 실제로 동일한 테이블 내의 종속 레코드를 참조합니다. 질문 : 모든 행이 마스터 테이블에 있는지 확인하기 위해 외래 키 제약 조건 문을 추가하는 방법을 이해해야합니다.