3つのテーブル間で「ON DELETE CASCADEを」(複数あるが、これらに接続がまだ存在しない)列IDとMySQLの外部キーは、私は私のDBに3つのテーブルを持っている
- テーブル「分子」
- カラム "id"と "molecule_id"を持つ外部キーと、 "molecule.id"を参照するテーブル "descriptor"
- カラム "id"と "descriptor_id"と "descriptor.id"を参照する外部キーとの "tDepDescriptor"
(e achテーブルには列がありますが、外字キーやそのようなものはありません)
すべての外部キーには「削除カスケード」が指定されています。すべてのIDは符号なしint(5)です。
"descriptor"と "tDepDescriptor"の参照項目がある "molecule"のエントリを削除しようとすると、外部キーが「更新時に制限されている」ように何も起こりません。与えられた。 "ディスクリプタ"のエントリを削除すると、 "tDepDescriptor"内の参照元がすべて削除されるように削除されます。 「分子」のエントリを「ディスクリプタ」に参照しているが、「ディスクリプタ」のエントリを参照していないエントリを「tDepDescriptor」に削除しようとすると同じことが起こります。 "on delete cascade"は2つのテーブルで動作しますが、3つのテーブルが関わっているときには "cascade"が渡されないようです。
テーブルの内容は次のとおりです。 「分子」のエントリを削除する場合、「ディスクリプタ」内のすべての参照項目が削除されます。したがって、「ディスクリプタ」内の削除されたエントリの1つに対する参照を有する「tDepDescriptor」のすべてのエントリも削除される。
MySQLサーバのバージョンは5.1で、エンジンはInnoDBの
であることは、希望の誰かが、この説明が煩雑になることを従うことができると私を助けることができるです。
// EDIT: 問題が見つかりました。 データベースではなく、phpMyAdminに問題があるようです。 PMAで削除をクリックしても機能しませんでしたが、手動でクエリをコーディングすると、3つのテーブルすべてがカスケードされました。不思議ですが、少なくとも私のテーブルは正しく動作することがわかります。