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

Überprüfung der Verletzung der referenziellen Integritätsregel vor dem Löschen

Es gibt ein paar mögliche Optionen, die mir in den Sinn kommen:

  • Richten Sie kaskadierende Löschungen in der Datenbank ein, damit eine Löschung immer erfolgreich ist.
  • Überprüfen Sie vor dem Löschen mit SELECTs, ob zugehörige Datensätze vorhanden sind. Dies erfordert, dass die Anwendung die Einschränkungen kennt.
  • Ein gutes Domänenmodell (Geschäftsklassen) sollte es der Anwendung ermöglichen, verwandte Datensätze zu erkennen.
  • Ein O/R-Mapper wie NHibernate kann verwendet werden, um Kaskadenlöschvorgänge zu definieren.
  • Verwenden Sie SMO (Microsoft.SqlServer.Smo), um das Datenbankschema auf Beziehungen zu untersuchen, und suchen Sie dann nach vorhandenen verwandten Datensätzen. Ich weiß nicht, ob das möglich ist.