MySQL - Fremdschlüssel beim Löschen setze null in nicht null Feld
Dies ist wahrscheinlich eine triviale Frage, aber ich bin immer noch ein wenig ungeschickt, wenn es um Fremdschlüsselbeschränkungen geht, also wollte ich sicher gehen.
Nehmen wir an, ich habe einen Tischcountries
mit den Felderncountry_id
(PK) undname
und einen Tischcities
mit den Felderncity_id
(PK),name
undcountry_id
(FK).
Der Fremdschlüsselcities.country_id
hat die EinschränkungON DELETE SET NULL
. So wie ich es verstehe, bedeutet dies, dass wenn eine Aufzeichnung voncountries
wird gelöscht, alle Datensätze incities
Dieser Verweis auf den gelöschten Datensatzcountry_id
wird seine habencountry_id
Feld auf NULL gesetzt.
Was ist, wenn jedochcities.country_id
hat das AttributNOT NULL
? Verhindert dies, dass die Fremdschlüsseleinschränkung ordnungsgemäß funktioniert? Es würde Sinn machen, dass dies der Fall ist, aber ich möchte es nur überprüfen.