AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Foreign key references are present for the record
Thema durchsuchen
Ansicht
Themen-Optionen

Foreign key references are present for the record

Offene Frage von "DevStar"
Ein Thema von DevStar · begonnen am 5. Aug 2008 · letzter Beitrag vom 6. Aug 2008
Antwort Antwort
Seite 1 von 2  1 2      
DevStar

Registriert seit: 26. Aug 2007
79 Beiträge
 
#1

Foreign key references are present for the record

  Alt 5. Aug 2008, 01:57
Datenbank: Firebird • Version: 2.1 • Zugriff über: Delphi, IBX
Beim Löschen der Client-Tabelle zu meiner Master-Tabelle, bekomme ich folgende Fehlermeldung:

Foreign key references are present for the record Was will Firebird mir damit sagen?
Hat jemand eine Idee, wie sich das umgehen läßt?

Kennt jemand überhaubt diesen Fehler? Habe vergebends gegoogelt.

LG DevStar
  Mit Zitat antworten Zitat
Hansa

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

Re: Foreign key references are present for the record

  Alt 5. Aug 2008, 02:05
Das ON CASCADE ist falsch eingestellt, oder der DS ist noch active.
Gruß
Hansa
  Mit Zitat antworten Zitat
DevStar

Registriert seit: 26. Aug 2007
79 Beiträge
 
#3

Re: Foreign key references are present for the record

  Alt 5. Aug 2008, 02:26
Zitat von Hansa:
Das ON CASCADE ist falsch eingestellt, oder der DS ist noch active.
Das stimmt on delete CASCADE , denn da tritt der Fehler auf.
Stelle ich auf SET NULL oder DEFAULT um, dann wir der Datensatz in meinem View ignoriert, dan ist er weg und wird nicht mehr angezeigt.

In der Client-Tabelle sind Bezeichnungen hinterlegt, da ist ja Quatsch, wenn diese gelöscht werden, das dann der Datensatz in der Mastertabelle keine Bezeichnung hat.

Also ist CASCADE richtig. Nur müsste ich den Fehler abfangen.

ShowMessage ('Eintrag kann nicht gelöscht werden, da er in Tabelle 1 verwendet wird.'); Der Witz ist nur, bei CASCADE ist mein Datensatz in der MAster-Tabelle komplett weg.

Oder denke ich ganz falsch mit meiner Datenbank?
  Mit Zitat antworten Zitat
Hansa

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

Re: Foreign key references are present for the record

  Alt 5. Aug 2008, 02:59
Zitat von DevStar:
Zitat von Hansa:
Das ON CASCADE ist falsch eingestellt, oder der DS ist noch active.
Also ist CASCADE richtig. Nur müsste ich den Fehler abfangen.

Der Witz ist nur, bei CASCADE ist mein Datensatz in der MAster-Tabelle komplett weg.

Oder denke ich ganz falsch mit meiner Datenbank?
Halb zumindest. Wieso ist das CASCADE denn richtig ? Das läuft so : Master-DS wird gelöscht und dann werden alle untergeortneten DS auch gelöscht, also die Details. Ich würde das mal im IBExpert ausprobieren. Deshalb auch der zweite Hinweis. Was sagt uns denn das "is present" ? Das übersetze ich jetzt aber nicht.
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Foreign key references are present for the record

  Alt 5. Aug 2008, 07:55
CASCADE bedeutet, dass beim Löschen des Mastersatzen (z.B. Rechnung) alle Detailsätze ( z.B. Rechnungspositionen) automatisch mitgelöscht werden. Ist imho aber eine gefährliche Option.
Markus Kinzler
  Mit Zitat antworten Zitat
dfried

Registriert seit: 16. Aug 2005
486 Beiträge
 
#6

Re: Foreign key references are present for the record

  Alt 5. Aug 2008, 08:53
Zitat von mkinzler:
CASCADE.... Ist imho aber eine gefährliche Option.
Naja, wenn man weiss was man tut kanns auch sehr nützlich sein.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#7

Re: Foreign key references are present for the record

  Alt 5. Aug 2008, 08:57
Zitat von dfried:
Naja, wenn man weiss was man tut kanns auch sehr nützlich sein.
Aber nur dann .
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Hansa

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

Re: Foreign key references are present for the record

  Alt 5. Aug 2008, 10:52
Er hat das hier gefragt :

Zitat von DevStar:
Beim Löschen der Client-Tabelle zu meiner Master-Tabelle, bekomme ich folgende Fehlermeldung: ...
Das ist also das Gegenteil von ON DELETE CASCADE. Und das habe ich nur in den Raum geworfen, weil es irgendwie schon passt. Aber eben leider nicht so richtig für den konkreten Fall.

Trotzdem noch hierzu :

Zitat von mkinzler:
CASCADE bedeutet...Ist imho aber eine gefährliche Option.
Was wäre wenn der Rechnungskopf gelöscht wird, ohne ALLE Detaildaten zu löschen ? Tja, die bleiben dann als Datensatzleichen in der DB und müssen irgendwie, irgendwann (irgendwo ) von Hand gelöscht werden. Da die Daten ja hoffentlich nicht öffentlich zumindest über IDs zugänglich sind, wird das aus dem Programm raus echt schwierig. Man könnte halt einen Punkt einführen : "alle verwaisten Detail-Datensätze ohne Master - ID löschen". Und dann ? Man hätte sich tatsächlich die Wörter ON DELETE CASCADE gespart. Leichen im Keller sind immer schlecht.
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Foreign key references are present for the record

  Alt 5. Aug 2008, 10:56
Es gibt auch andere Möglichkeiten: Manuelles Löschen im Code oder Umlenken auf Dummy-Rechnung o.ä. Ich habe auch nicht gesagt das diese Option schlecht ist; man sollte sie halt wohlüberlegt einsetzen. Das Beispiel mit der Rechnung war ja auch ein Pro Beispiel; ein Contra-Fall wäre die Beziehung von Rechnungspositionen zu Artikeln.
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

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

Re: Foreign key references are present for the record

  Alt 5. Aug 2008, 11:18
Zitat von mkinzler:
...oder Umlenken auf Dummy-Rechnung o.ä...Das Beispiel mit der Rechnung war ja auch ein Pro Beispiel; ein Contra-Fall wäre die Beziehung von Rechnungspositionen zu Artikeln.
Na gut, das Umlenken lasse ich mir ja noch gefallen. Nur, das Contra-Beispiel ist genauso kontraproduktiv. Was nützt es mir denn, einen Artikel zwar zu löschen, aber nicht die Rechnungspositionen, auf denen der vorkommt ? Dann hätte man Rechnungspositionen ohne Artikelnr., von denen keiner mehr weiß, was der Kram soll. Nene, wenn schon löschen, dann aber richtig. Eben ohne Leichen in der DB zurückzulassen, die mühsam einzeln entsorgt werden müssen. *grusel*
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz