Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Die Löschweitergabe ist eines der Features der referentiellen Integrität. Bei aktivierter referentieller Integrität bewirkt die Löschweitergabe immer etwas, unabhängig davon, ob Sie die Löschweitergabe aktiviert haben oder nicht. Wenn Sie diese aktiviert haben, löscht sie die mit dem zu löschenden Datensatz verknüpften Datensätze ebenfalls. Wenn Sie sie deaktiviert haben, sorgt sie dafür, dass bereits mit anderen Datensätzen verknüpfte Datensätze nicht mehr gelöscht werden können. In diesem Artikel schauen wir uns das im Detail an und erläutern anhand von Beispielen, wann Sie die Löschweitergabe aktivieren sollten und wann nicht.
Beispieldatenbank zur Löschweitergabe
Die Beispiele dieses Artikels finden Sie in der Datenbank 2102_Loeschweitergabe.accdb.
Löschweitergabe aktivieren
Um den Status der Löschweitergabe für eine Beziehung zu ermitteln, benötigen Sie das Beziehungen-Fenster, das Sie mit dem Ribbon-Befehl Daten-bank-tools|Be-zie-hun-gen|Be-zie-hungen öffnen. Hier finden wir eine Beziehung zwischen den Tabellen tblKunden und tblAnreden vor, wobei die Beziehung über das Fremdschlüsselfeld AnredeID der Tabelle tblKunden und das gleichnamige Primärschlüsselfeld in der Tabelle tblAnreden hergestellt wird.
Ob die Löschweitergabe aktiviert ist oder nicht, verraten die Eigenschaften der Beziehung. Um diese anzuzeigen, klicken Sie doppelt auf den Beziehungspfeil. Sie können auch mit der rechten Maustaste auf den Beziehungspfeil klicken und im nun erscheinenden Kontextmenü den Befehl Beziehung bearbeiten… auswählen. In beiden Fällen erscheint der Dialog aus Bild 1. In diesem Beispiel erkennen Sie bereits, dass die Löschweitergabe aktiviert ist.
Bild 1: Aktivieren der Löschweitergabe für eine Beziehung
Wirkung der aktivierten Löschweitergabe
Wenn die Löschweitergabe aktiviert ist, wirkt sich das auf Löschvorgänge in der Tabelle aus, die das an der Beziehung beteiligte Primärschlüsselfeld stellt. In diesem Fall ist das die Tabelle tblAnreden.
Sobald der Benutzer einen Datensatz aus dieser Tabelle löscht, prüft Access, ob es in der verknüpften Tabelle tblKunden Datensätze gibt, die bereits über das Feld AnredeID mit einer Anrede aus der Tabelle tblAnreden verknüpft sind.
Ist das der Fall, werden die verknüpften Datensätze bei aktivierter Löschweitergabe ebenfalls gelöscht.
Gegebenenfalls erscheint dann noch eine Warnmeldung, in welcher der Benutzer entscheiden kann, ob er den Datensatz tatsächlich löschen möchte.
Wirkung der deaktivierten Löschweitergabe
Wenn Sie die Beziehung bearbeiten und den Haken vor der Option Löschweitergabe an verwandte Datensätze entfernen, dann hat das auch eine Auswirkung. Wenn der Benutzer dann nämlich einen der Datensätze der Tabelle tblAnreden löschen möchte, prüft Access wieder, ob es bereits mit diesem Datensatz verknüpfte Datensätze in der Tabelle tblKunden gibt. Ist das der Fall, werden diese allerdings nicht mitgelöscht, sondern das Gegenteil passiert: Ein Datensatz der Tabelle tblAnreden kann nicht mehr gelöscht werden, sobald auch nur ein Datensatz der Tabelle tblKunden mit diesem Datensatz verknüpft ist. Auch in diesem Fall erscheint eine Meldung, die den Benutzer darauf hinweist, dass der Löschvorgang nicht möglich ist.
Löschweitergabe zur Durchsetzung der referentiellen Integrität
Beide Einstellungen sorgen letztendlich dafür, dass die für diese Beziehung definierte referentielle Integrität durchgesetzt wird. In diesem Fall soll sichergestellt werden, dass es zu keinem Zeitpunkt Datensätze in der Tabelle mit dem an der Beziehung beteiligten Fremdschlüsselfeld gibt, deren Fremdschlüsselwert nicht im Primärschlüsselfeld der anderen Tabelle enthalten ist.
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo