Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Ändern von Datensätzen in Master-Detail-Verkn. nicht möglich (https://www.delphipraxis.net/80160-aendern-von-datensaetzen-master-detail-verkn-nicht-moeglich.html)

BlueStarHH 3. Nov 2006 20:24

Datenbank: Firebird • Version: 1.5 • Zugriff über: TIBTable, TIBDatabase, IBX

Ändern von Datensätzen in Master-Detail-Verkn. nicht möglich
 
Hallo,

ich habe zwei Firebird-Tabellen. Eine ist die Haupttabelle und die andere die Detailtabelle die über das Feld NR verknüpft sind. Anlegen und Löschen von Datensätzen klappt. In folgender Situation kommt es zu einem Fehler:

1. Ein Datensatz in der Master-Tabelle wird ausgewählt. In der Detailtabelle existieren zu diesem Datensatz Detaildatensäte.
2. Im Datensatz der Master-Tabelle wird das Feld NR verändert.
3. Bei einem Post erscheint folgende Fehlermeldung: violation of FOREIGN KEY constraint "FK_DETAIL-TABELLE" on table "DETAIL-TABELLE"

Im Anhang befindet sich ein kleines Demo-Projekt mit dem dies nachvollzogen werden kann. Das Projekt enthält nur 5 Zeilen code und die Einstellungen die visuell vorgenommen wurden. Sollte mit jeder Delphi-Version geöffnet werden können. Die Embedded-Version von Firebird ist im ZIP enthalten. Zum Testen muss man also nichts groß einstellen oder installieren.

Wer kann helfen? Vielen Dank im Voraus!

Hansa 3. Nov 2006 20:53

Re: Ändern von Datensätzen in Master-Detail-Verkn. nicht mög
 
Du hast einen Foreign Key in Tabelle Hist, sonst nirgends. Es ist keine ID zu sehen usw. Kein Trigger. Kein Generator. 8) Kein Verweis auf den foreign key. Wie soll das gehen ?

BlueStarHH 3. Nov 2006 21:17

Re: Ändern von Datensätzen in Master-Detail-Verkn. nicht mög
 
Danke, Hansa! Ich hab tagelang gesucht, aber Du hast mich auf den richtgen Weg gebracht. Beim Erstellen der Tabelle fehlt nur "ON UPDATE CASCADE". Also:

SQL-Code:
ALTER TABLE DetailTable ADD CONSTRAINT FK_DetailTable FOREIGN KEY (NR) REFERENCES MasterTable (NR) ON DELETE CASCADE ON UPDATE CASCADE;


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:41 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