Ich versuche nur, ein paar Ideen zu bekommen, was die Leute für dieses Szenario tun. Wir haben eine Systemdatenbank (SQL Server 2008 R2) mit Tabellen und jede Tabelle hat ein Feld, das wir "Gelöscht" nennen können. Es ist im Grunde ein Bitfeld, wenn es eine 1 ist, wird der Datensatz gelöscht, wenn es eine 0 ist, wird es nicht gelöscht. Das Feld ist nicht nullbar und seine Standardeinstellung ist natürlich 0.
Wir können keine echten Löschungen in der Datenbank zulassen. Um dies zu umgehen, setzen wir ein Bitfeld (Gelöscht) auf true. In unserer Anwendung erhalten wir Fragen, die folgendermaßen aussehen:
SELECT blah FROM MyTable WHERE .. AND Deleted=0
Grundsätzlich filtern wir nach Datensätzen, sodass wir nur nicht gelöschte Zeilen erhalten. Unser Problem sind verwandte Datensätze, die kaskadiert werden müssen. Was bevorzugen die Leute, sollten wir dies im serverseitigen Code tun, damit beim Löschen eines Datensatzes alle zugehörigen Datensätze gelöscht werden (setzt das gelöschte Bitfeld auf true)? Oder sollte dies ein Trigger sein, der dieses Feld überprüfen und das Bitfeld für alle zugehörigen Datensätze auf 1 setzen muss?
Oder sind wir völlig auf dem falschen Weg?