window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Verknüpfte Daten löschen bei referentieller Integrität

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Wenn Sie die Beziehung zweier Tabellen mit referentieller Integrität definiert haben und dabei die Löschweitergabe nicht aktiviert ist, können Sie Daten aus der Tabelle mit dem an der Beziehung beteiligten Primärschlüsselfeld nicht ohne weiteres löschen. Manchmal ist das aber dennoch erwünscht – beispielsweise, wenn die Daten zuvor in ein Archiv übertragen wurden. Wie Sie die Daten dann löschen, stellen wir in diesem Artikel vor.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 2102_VerknuepfteDatenLoeschen.accdb.

Warum löschen trotz deaktivierter Löschweitergabe

Referentielle Integrität mit deaktivierter Löschweitergabe definiert man, damit die Daten aus der mit dem Primärschlüsselfeld an der Beziehung beteiligten Tabelle nicht so einfach gelöscht werden können, wenn es in der Tabelle mit dem Fremdschlüsselfeld bereits mit dem zu löschenden Datensatz verknüpfte Datensätze gibt.

Oder an einem Beispiel erklärt: Angenommen, Sie verwalten Kunden und Bestellungen in den beiden Tabellen tblKunden und tblBestellungen, die über das Fremdschlüsselfeld KundeID in der Tabelle tblBestellungen und das Primärschlüsselfeld KundeID in der Tabelle tblKunden verknüpft sind. Außerdem ist für diese Beziehung referentielle Integrität ohne Löschweitergabe definiert. Dann können Sie einen Kunden nicht mehr löschen, wenn zu diesem Kunden bereits mindestens eine Bestellung vorliegt.

An der Bestellung hängen übrigens auch noch die Bestelldetails, wiederum über eine Beziehung mit referentieller Integrität und Löschweitergabe verknüpft (siehe Bild 1).

Tabellen der Beispieldatenbank

Bild 1: Tabellen der Beispieldatenbank

Warum sollte man solch einen Kunden dennoch löschen wollen Beispielsweise deshalb, weil dieser Kunde seit zehn Jahren nichts mehr bestellt hat und deshalb in eine Archivtabelle in einer anderen Datenbank übertragen werden soll.

Während die referentielle Integrität ohne Löschweitergabe im regulären Betrieb sicherstellt, dass keine Kunden gelöscht werden, für die es bereits Bestellungen gibt, erweist sie sich als hinderlich, wenn man diese Daten aus berechtigten Gründen doch einmal löschen möchte.

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

Schreibe einen Kommentar