0

我使用 MySQL 5.1。有一个带有 2 个外键的表,引用 2 个不同的表:

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 属性未设置。

会是什么?怎么解决?也许,使用触发器?

4

1 回答 1

1

通过插入一些测试数据来测试级联,然后从单词中删除一行。

您还可以使用 mysqldump 转储数据库,并读取数据库服务器认为它应该做什么。

我很确定您会发现级联按书面方式工作,而不是图形界面中显示的那样。

于 2012-09-06T22:15:36.107 回答