Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Löschen aus einer MySQL-Tabelle mit Fremdschlüsseleinschränkungen

Leider findet die automatische Löschung, die Ihrer Meinung nach erfolgen sollte, nicht statt. Sie müssten die Zeilen in Tabelle B manuell löschen, die die ID aus der Zeile in Tabelle A enthalten, die Sie entfernen möchten.

Versuchen Sie, ON DELETE CASCADE hinzuzufügen zu Ihrer Fremdschlüsselspaltendefinition in Tabelle B.

Wenn Sie Hibernate oder ein anderes ORM-Tool verwenden, verfügt es über einen "Kaskaden"-Mechanismus, der dies automatisch handhabt. Da Sie hier jedoch direkt mit der Datenbank verbunden sind, müssen Sie bedenken, dass eine Zeile nicht gelöscht werden kann, wenn die ID dieser Zeile in einer anderen Tabelle als Fremdschlüssel vorhanden ist (wie in Ihrem Fall der Primärschlüssel von A existiert in einige der Zeilen in B). Es sei denn, Sie geben die Eigenschaft ON DELETE CASCADE an.