Einzelnen Beitrag anzeigen

Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#18

AW: Fehlerhaften ForeinKey finden

  Alt 30. Aug 2015, 17:35
Ach, jetzt versteh ich: Klar, die Ort-Id in der Adresstabelle als ForeignKey zu kennzeichnen ist sinnvoll.
Vielleicht ist das jetzt halb klar. Der Grund wohl noch nicht richtig. Die Antworten sind mir allerdings zu kurz. Du musst prinzipiell dafür sorgen, dass keine Datenleichen im Keller der DB rumliegen. Das passiert aber ohne die Foreign Keys vor allem ohne Regeln. Von letzterem sehe ich immer noch nichts. Plz/Schreibweise Ortsname usw. ist mir jetzt zu undurchsichtig. Deshalb folgendes Beispiel : ich will einen Lieferanten löschen, was nun ? Ich lösche den einfach und fertig. Jetzt habe ich aber auch 10 Artikel, die dieser Lieferant liefert. Auch egal, dann werden die eben auch gelöscht. Geht sogar ohne eigene Programmierung in der DB über
Code:
on delete cascade
bei den foreign keys. Lieferant löschen => auch Artikel sind weg, sofern die einen foreign Key auf die Lieferanten-ID haben.

Jetzt gehts aber irgendwann ums Geld : da sind nämlich noch 2 unbezahlte Rechnungen mit den 10 Artikeln, die ich ja soeben gelöscht habe wegen des Lieferanten. Schreib jetzt mal davon eine Mahnung. Die würde ähnlich aussehen, wie Deine Liste. Wegen der gelöschten Artikel stehen keine Rechnungspositionen auf der Rechnung, eventuell aber ein Endbetrag, weil der mit dem gelöschten Kram prinzipiell nichts zu tun hat. Also, das ganze ist auch ein Rattenschwanz bei dem man verdammt aufpassen muss.

Um die verschwundenen Rechnungs-Artikel eventuell noch irgendwie sichtbar zu halten gibts ja noch mehr :
Code:
on delete set null
z.B. oder
Code:
on update cascade
Unbedingt ansehen ! Einfach löschen geht jedenfalls nicht. Bei abhängigen Tabellen komplett auf Foreign Keys zu verzichten, tsts.
Gruß
Hansa
  Mit Zitat antworten Zitat