그것은 외래 키에 관해서 라면, 그것은 단지 언급 외래 키의 목적 (참조 무결성) 데이터의 참조 무결성을 확인 하는 것입니다. "하지만 어떤 행동과 의미 할 외래 키 특히 포함"?
1, 외부 체인 설정:
(1) 만들기를 통해 외래 키 테이블을 만듭니다.
테이블에서 명령 코드의 2 라인을 봐:
는 테이블 도시 (
를 만들
......
키 idx_fk_country_id (country_id)
제약 조건 fk_city_country 외래 키 (country_id) 참조 국가 (country_id) 삭제에 업데이트 Casca에 제한 삭제에 드 계단식
)...
참고: 업데이트 캐스케이드 ON DELETE CASCADE에 계단식 업데이트와 계단식 삭제.
일반적으로, 외부 체인을 설정 하면 설정한 외부 체인 필드의 인덱스 먼저, 위와 같이: 키 idx_fk_country_id (country_id), 그러나 이것은 불필요 한, 위의 코드에서:
키 idx_fk_country_id (country_id)
제약 조건 Fk_city_country
이러한 생략할 수 있습니다, 직접 외래 키에서에서 시작. 물론, 체인 이름을 하려면 다음 제약은 필수,
키 idx_fk_country_id (country_id) 없는 MySQL 자동으로 추가 (즉, 표준 index) 키 인덱스를 설정한 후 외부 체인. 쇼를 볼 수 있습니다 만들기 테이블 구축 완료 한 후에.
(2) 만드는 ALTER TABLE을 통해 외래 키:-명령을 수정 하지는. 그것을 추가 합니다.
ALTER 테이블 시 추가 인덱스 idx_city (Countryid);
ALTER 테이블 시 추가 제약 조건 fk_city_country DELETE CASCADE;에 외래 키 (Countryid) 참조 국가 (country_id)
2, 외래 키 삭제:
ALTER TABLE tbname 드롭 외래 키 fk_fkname;
하지만 제약 fk_fkname (즉, 외래 키 기호)를 삭제 하려면 어떻게 해야 당신이 때 정의 지정 하지? 걱정 하지 마세요, MySQL 자체에 만들 것입니다, 다음 명령을 볼 수 있습니다: 표시 CREATE TABLE tbname, 다음 위의 명령을 실행.
특정 작업의 체인 이외의 3:
에 삭제 제한 및 계단식 삭제는 동시에 정의할 수 없습니다.
기본 동작 1:
부모 테이블의 기본 키가 없는 경우 자식 테이블의 외래 키 값을 늘리면 삽입은 금지 됩니다.
기본 작업 2:
자식 테이블 내용이 기록 되어야 하는 경우 기본 테이블 레코드, 삭제, 삭제 사용 안 함
따라서, 위의 생략 될 수 있다 삭제에 제한.
기본이 아닌 작업-계단식 업데이트:
부모 테이블의 기본 키를 업데이트 하는 경우 자식 테이블에 해당 레코드를, ON UPDATE cascade로 구현 되는 경우 자식 테이블 업데이트 자동으로 됩니다.
기본이 아닌 작업-계단식 삭제:
부모 테이블의 기본 키를 업데이트 하는 경우 자식 테이블에 해당 레코드에 DELETE Cascade로 구현 되는 경우 자식 테이블 업데이트 자동으로 됩니다.
4. 다른 외래 키의 매개 변수:
A, null 설정: 부모 테이블 업데이트 되거나 삭제 될 때 자식 테이블에 해당 필드 NULL을 설정 되어 나타냅니다.
B, 조치: 동일 제한, 부모 테이블에서 자식 테이블 레코드를 연결 하는 경우 업데이 트 되 고 제한.
5, 외래 키 검사를 일시적으로 해제:
자주 하는 데 사용:
A, 여러 테이블의 데이터를 가져올 때 필요한 테이블 가져온 순서를 무시 하.
B, 데이터 로드 및 ALTER TABLE 작업을 수행할 때.
명령:
Foreign_key_checks 설정 = 0
완료 되 면 다시 설정된 Foreign_key_checks와 외래 키 검사 = 1;