我使用MySQL 5.1。有2個外鍵的表,參考2個不同的表:MySQL在1個表中有多個級聯外鍵
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;
但由於某些原因的CASCADE屬性在words_in_group表的關鍵之一是取消設置,當我使用phpMyAdmin或者Navicat的,並檢查該表的結構。
它可能是什麼?怎麼解決?也許,使用觸發器?
問題:爲什麼要對引用自動遞增鍵的外鍵使用ON UPDATE CASCADE?似乎主鍵不應該更新,那麼爲什麼CASCADE? –
=你爲什麼想要ON UPDATE CASCADE = '你說得對。我只需要在DELETE CASCADE.' – user4035