CREATE TABLE `테이블1` (
`uid` int(10) unsigned NOT NULL auto_increment,
`id` varchar(8) NOT NULL default '',
`name` varchar(12) NOT NULL default '',
PRIMARY KEY (`uid`),
KEY `IND_One_id` (`id`)
) TYPE=InnoDB ;
CREATE TABLE `테이블2` (
`uid` int(10) unsigned NOT NULL auto_increment,
`name` varchar(30) NOT NULL default '',
`title` text,
`regdate` varchar(10) default NULL,
PRIMARY KEY (`uid`),
KEY `IND_Two_name` (`name`)
) TYPE=InnoDB ;
[TEST]테이블의
user_id는 [테이블1]의 id를 참조하고
user_uid는 [테이블2]의 uid를 참조하도록 하려고 합니다.
근데 아래와 같이 테이블 생성구문을 넣으면
CREATE TABLE `TEST` (
`uid` int(10) unsigned NOT NULL auto_increment,
`user_id` varchar(8) NOT NULL default '',
`user_uid` varchar(10) NOT NULL default '',
`percent` varchar(5) default NULL,
PRIMARY KEY (`uid`),
KEY `IND_user_id` (`user_id`),
KEY `IND_user_uid` (`user_uid`),
CONSTRAINT `FK_userid` FOREIGN KEY (`user_id`) REFERENCES `테이블1` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `FK_useruid` FOREIGN KEY (`user_uid`) REFERENCES `테이블2` (`uid`) ON DELETE CASCADE
) TYPE=InnoDB ;
#1005 - Can't create table './nowsite/fav_bank.frm' (errno: 150) <= 에러가 갑니다.
이것저것 삭제해서 테스트해본 결과
CONSTRAINT `FK_useruid` FOREIGN KEY (`user_uid`) REFERENCES `테이블2` (`uid`) ON DELETE CASCADE
이 구문때문에 에러가 난 것이던데.. 혹시 테이블의 `uid`가 PRIMARY KEY 라서 인덱스를 안준것 때문에 에러가 나는가~ 싶어서 인덱스를 추가로 주었는데도 에러가 나더군요.
뭐가 잘못된건지~~ 책을 봐도 모르겠고... 다른 분들의 글을 봐도.. 모르겠어요.
조언 좀 부탁드립니다.
**혹시 오타가 있더라도 그건 무시해주세요.. 옮겨 적다보니 생긴 오타일테니깐요...**
|