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 テーブルのキーの 1 つの CASCADE プロパティが設定されていません。

それは何でしょうか?の解き方?たぶん、トリガーを使用しますか?

4

1 に答える 1

1

いくつかのテスト データを挿入してカスケードをテストし、単語から行を削除します。

また、mysqldump を使用してデータベースをダンプし、データベース サーバーが何をすべきだと考えているかを読み取ることもできます。

カスケードがグラフィカル インターフェイスに表示されているのではなく、書かれているとおりに機能することがわかると思います。

于 2012-09-06T22:15:36.107 に答える