2013-07-28 5 views
0

외래 키 제약 조건에 약간의 문제가 있습니다. 아마도 코드를 올바르게 결합하지 않을 것입니다.MySQL 외래 키 제약 조건

공항 테이블은 apType 테이블에있는 유형 값만 허용한다는 개념입니다. apType 테이블에 형식이 없으면 오류가 발생합니다. 그러나 이것을 테스트 해본 결과 오류가 발생하지는 않습니다. 데이터베이스에 입력 된 유형을 입력하기 만하면됩니다.

공항 테이블 :

CREATE TABLE `airport`(
`id` int primary key AUTO_INCREMENT, 
`name` varchar(255) NOT NULL, 
`rwyCount` int, 
`lat` float(6), 
`lon` float(6), 
`type` varchar(255), 
constraint FOREIGN KEY (type) REFERENCES apType(type) match simple 
)ENGINE=MyISAM DEFAULT CHARSET=latin1; 

apType 테이블 : apType 값의

CREATE TABLE `apType`(
`id` int primary key AUTO_INCREMENT, 
`type` varchar(255) NOT NULL 
)ENGINE=MyISAM DEFAULT CHARSET=latin1; 

삽입 (이 유효해야하는 유일한 값입니다) :

INSERT INTO `apType` (`type`) VALUES ('private'),('public'),('military'); 

삽입하는 오류가 발생해야합니다.

insert into `airport` (`name` , `rwyCount` , `type` , `lat` , `lon`) values ('failland', 3 , 'space', 45.588611, -122.5975); 

누구든지이 문제를 파악할 수 있습니까?

+0

웹 전반에 기사가 있습니다. 좋아하는 검색 엔진을 사용해 보셨습니까? 배우는 것은 매우 생산적인 기술입니다. 자신의 문제에 대한 자신의 답을 연구 할 수있는 능력입니다. – MatBailie

+0

나는 참으로 많은 답변이 유용한 정보를 제공해 주었다. 그러나 내 문제를 해결할 수 있었던 것은 아무것도 없다. –

답변

2

외래 키가 아직 사용중인 DB 엔진에 구현되지 않은 것으로 보입니다. Why doesn't MySQL's MyISAM engine support Foreign keys?

InnoDb로 전환하는 것이 좋습니다.

+0

나는 이것을 시도하고 # 1005를 얻는다. 'todtm-db.airport'테이블을 만들 수 없다. (errno : 150) 오류가 발생했습니다. –

+0

두 번째 테이블을 만들기 전에 인덱스를 작성해야합니다. apType (유형)에 색인 ix를 작성하십시오. . 기본 키를 참조하지 않기 때문입니다. :) 그런 다음 table airport를 만듭니다. – jmpyle771

+0

기본 키가 아닌 다른 것을 참조하고 있다는 사실을 완전히 잊었습니다. 그것을 고쳤다, 그것은 작동하고, 적절한 오류를 제공합니다. 고맙습니다 –

관련 문제