MySQL 5.1을 사용합니다.MySQL 하나의 테이블에 여러 개의 캐스케이드 외래 키
CREATE TABLE `words` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`word` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `words_groups` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `words_in_group` (
`group_id` int(10) unsigned DEFAULT NULL,
`word_id` int(10) unsigned DEFAULT NULL,
KEY `word_id` (`word_id`) USING BTREE,
KEY `group_id` (`group_id`) USING BTREE,
CONSTRAINT `group_id` FOREIGN KEY (`group_id`) REFERENCES `words_groups` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `word_id_fk` FOREIGN KEY (`word_id`) REFERENCES `words` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
을하지만 phpMyAdmin을 또는 Navicat를 사용하고이 테이블 구조를 검사 할 때 어떤 이유로 words_in_group 테이블에있는 키 중 하나에 대한 CASCADE 속성이 설정되지 : 2 개 개의 다른 테이블을 참조, 2 외래 키가있는 테이블이 있습니다.
무엇이 될 수 있습니까? 어떻게 해결할 수 있습니까? 트리거를 사용 하시겠습니까?
질문 : 왜 자동 증가 키를 참조하는 외래 키에 대해 ON UPDATE CASCADE를 사용하고 싶습니까? 기본 키가 업데이트되어서는 안되는 것 같습니다. 왜 CASCADE입니까? –
= 왜 당신은 ON CASCADE = '당신이 옳았습니까. 나는 ON DELETE CASCADE 만 필요합니다. ' – user4035