Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#9

AW: Tabellen richtig mit Constaints darstellen

  Alt 1. Jan 2015, 20:04
Löscht Du bei der Constraint Definition oben einen Datensatz aus der Mastertabelle, auf den bereits Detaildatensätze verweisen, wird der Server einen Fehler erzeugen (eine häßliche Meldung auswerfen, die eigentlich niemand sehen will) und den Datensatz nicht löschen.
Deshalb verzichte ich seit langem darauf, Verknüpfungen auf Datenbank-Ebene (Foreign Keys) zu implementieren, und regle das stets in der Anwendung. Da kann ich nämlich abfragen, ob der zu löschende Detaildatensatz in der Mastertabelle Verwendung findet, und zwar mit einem einfachen
Code:
select * count
where Detailspalte = DetailDatensatzID
Ist Result > 0, erfolgt eine Meldung für den Anwender, die ihm mitteilt, daß der Datensatz nicht gelöscht werden kann, weil er noch in Verwendung ist. Oder optional eine MessageDlg, die fragt, ob die entsprechende Spalte aller Datensätze der Mastertabelle, die diesen Datensatz der Detailtabelle verwenden, mit Null oder 0 (steht bei mir meist für '_unbekannt') aktualisiert werden sollen: 'Wenn Sie den Eintrag "spanisch" dennoch löschen wollen, werden alle Datensätze, die die Sprache "spanisch" aufweisen, der Sprache "_unbekannt" zugeordnet.'
  Mit Zitat antworten Zitat