2012-06-28 4 views

답변

6

MyISAM은 외래 키를 전혀 지원하지 않습니다. manual에서 :

이노 이외의 스토리지 엔진의 경우, MySQL 서버는 FOREIGN KEY 구문에서 CREATE TABLE 문 구문 분석,하지만 사용하거나 저장하지 않습니다. ... 나중 단계에서 MyISAM 테이블에도 외래 키 제약 조건이 구현됩니다.

이것은 다음 버전 인 MySQL 5.6 용이므로 아직 구현되지 않았습니다. 텍스트는 이전 버전과 완전히 동일합니다.

이것은 외래 키 구조가 전혀 사용되지 않는다는 것을 의미합니다. CREATE TABLE 명령에 지정할 수 있지만 MySQL은 자동으로 무시합니다. 인덱스가 생성되지 않고 저장되지 않습니다. 따라서 SHOW CREATE TABLE 명령은 이 아니며은 외래 키를 생성하려했음을 나타냅니다.

외래 키 지원이 필요하면 InnoDB 스토리지 엔진을 대신 사용해보십시오. InnoDB은 외래 키에 대한 인덱스를 자동으로 생성합니다.

+0

그래서 실제로 질문에 대답하십시오. 인덱스를 원할 경우 열에 별도의 인덱스를 만듭니다. – Konerak

1

의 MyISAM 엔진은 외래 키를 지원하지 않습니다 만 이노 엔진 :

http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

외래 키 검사가 신속하고 필요로하지 수 있도록 InnoDB하지만 외래 키에 인덱스와 참조 키가 필요합니다 테이블 스캔. 참조 테이블에는 외부 키 열이 같은 순서로 첫 번째 열로 나열되는 인덱스가 있어야합니다. 이러한 색인은 이 없으면 참조하는 테이블에 자동으로 만들어집니다. 외래 키 제약 조건을 적용하는 데 사용할 수있는 또 다른 인덱스 을 작성하면이 인덱스가 나중에 자동으로 삭제 될 수 있습니다. index_name이 주어지면 앞에서 설명한대로 사용됩니다.

관련 문제