Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Kaskadierende Löschungen, die mehrere Kaskadenpfade verursachen

Die genehmigte Antwort ist keine gute Antwort. Das beschriebene Szenario ist kein schlechtes Design, noch ist es "riskant", sich auf die Datenbank zu verlassen, um ihre Arbeit zu erledigen.

Die ursprüngliche Frage beschreibt ein absolut gültiges Szenario, und das Design ist gut durchdacht. Natürlich sollte das Löschen eines Benutzers sowohl die Elemente des Benutzers (und alle Stimmen darauf) als auch die Stimmen des Benutzers für alle Elemente (sogar Elemente, die anderen Benutzern gehören) löschen. Es ist sinnvoll, die Datenbank aufzufordern, diese kaskadierende Löschung durchzuführen, wenn der Benutzerdatensatz gelöscht wird.

Das Problem ist, dass SQL Server damit nicht umgehen kann. Seine Implementierung von kaskadierenden Löschungen ist mangelhaft.