私はclass table inheritanceを使用するMySqlスキーマを持っていますが、子テーブルに親テーブルと外部テーブルからのカスケード削除が必要です。2テーブルからMySqlカスケード削除
create table parent (
_key bigint unsigned not null,
name varchar(64) unique not null,
primary key(_key)
);
create table child_a (
_key bigint unsigned not null,
foreign_key_a bigint unsigned not null,
foreign key(_key) references parent(_key) on delete cascade,
foreign key(foreign_key_a) references a(_key) on delete cascade,
primary key(_key)
);
create table child_b (
_key bigint unsigned not null,
foreign_key_b bigint unsigned not null,
foreign key(_key) references parent(_key) on delete cascade,
foreign key(foreign_key_b) references b(_key) on delete cascade,
primary key(_key)
);
問題は、レコードが外部テーブルのいずれかから削除されたとき、それは子テーブルからではなく、親テーブルからレコードを削除しますです。私は解決策としてストアドプロシージャ/マルチステートメントを使用したくないでしょう。なぜなら、外部テーブルにはカスケード削除があるからです。そのためにもストアドプロシージャが必要です。
**削除カスケード**文を使用すると、親が削除されたときに、外部キーに関連する子を削除できます。おそらくあなたの場合は、あなたが使用しなければならないものではありませんか? –