コンポーネントのデータベースがあります。各コンポーネントは特定のタイプです。つまり、コンポーネントとタイプの間には多対1の関係があります。タイプを削除するとき、そのタイプの外部キーを持つすべてのコンポーネントを削除したいと思います。しかし、私が間違えなければ、カスケード削除はコンポーネントが削除されるときにタイプを削除します。説明したことを行う方法はありますか?
コンポーネントテーブルに含めるものは次のとおりです。
CREATE TABLE `components` (
`id` int(10) unsigned NOT NULL auto_increment,
`typeId` int(10) unsigned NOT NULL,
`moreInfo` VARCHAR(32),
-- etc
PRIMARY KEY (`id`),
KEY `type` (`typeId`)
CONSTRAINT `myForeignKey` FOREIGN KEY (`typeId`)
REFERENCES `types` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
)
InnoDBストレージエンジンを使用する必要があることを覚えておいてください。デフォルトのMyISAMストレージエンジンは外部キーをサポートしていません。
外部キー制約をON DELETE CASCADEとして定義する必要があります。
注: InnoDBストレージエンジンを使用する必要があります。デフォルトのMyISAMストレージエンジンは外部キー関係をサポートしていません。
CREATE TABLE `table2` (
`id` int(11) NOT NULL auto_increment,
`name` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `ids` (`ids`)
CONSTRAINT `foreign` FOREIGN KEY (`ids`)
REFERENCES `table2` (`ids`) ON DELETE CASCADE ON UPDATE CASCADE
)
このSQLを使用
T1からT1、T2を削除するT1.KEY = T2.key WHERE条件でT2を内部結合する