Ich entwerfe nicht jeden Tag Schemata, aber wenn ich das tue, versuche ich, Kaskadenaktualisierungen / -löschungen korrekt einzurichten, um die Verwaltung zu vereinfachen. Ich verstehe, wie Kaskaden funktionieren, aber ich kann mich nie erinnern, welcher Tisch welcher ist.
Wenn ich zum Beispiel zwei Tabellen habe - Parent
und Child
- mit einem Fremdschlüssel auf Child
diesen Referenzen Parent
und ON DELETE CASCADE
welche Datensätze lösen eine Kaskade aus und welche Datensätze werden von der Kaskade gelöscht? Meine erste Vermutung wäre, dass die Child
Datensätze gelöscht werden, wenn Parent
Datensätze gelöscht werden, da Child
Datensätze von Datensätzen abhängen Parent
, aber das ON DELETE
ist mehrdeutig; es könnte das bedeuten löschen Parent
Datensatz , wenn der Child
Datensatz gelöscht wird, oder es könnte das bedeuten löschen Child
Datensatz , wenn die Parent
gelöscht wird. Also was ist es?
Ich wünschte, die Syntax wäre ON PARENT DELETE, CASCADE
, ON FOREIGN DELETE, CASCADE
oder etwas ähnliches, um die Mehrdeutigkeit zu beseitigen. Hat jemand irgendwelche Mnemonics, um sich daran zu erinnern?