あるテーブルから特定のフィールドを削除しようとしていますが、別のテーブルから関連するすべてのフィールド(適切なfkを含むフィールド)を削除したいと考えています。
表1
id | name | fname
表2
id | table1Id | ...
table1Idは、Table1の主キーを参照する外部キーとして設定されています。ON DELETE CASCADE
これで私のコードは単純になり、次のようにTable1から行が削除されます。
function deleteWill($Id)
{
$stmt = $this->db->stmt_init();
if($stmt->prepare('DELETE FROM Table1 where id= ?'))
{
$stmt->bind_param("i", $Id);
$stmt->execute();
$stmt->close();
return true;
}
else
{
$stmt->close();
return false;
}
}
ただし、このCASCADE
オプションは機能しません。
Table2に同じfkを持つ複数の行があるという事実と関係がありますか?
もしそうなら、どうすればこれを修正して、Table2の関連するすべての行を削除できますか?