Hallo Leute,
ich habe eine stark normalisierte DB mit mehreren Tabellen. Oberster Master ist eine Kundentabelle, das Masterfeld für die Verknüpfungen der untergeordneten Tabellen ist der Primärindex (KdnID) dieser Kundentabelle.<br>
Wenn jetzt der Kunde gelöscht wird, sollen die zu diesem Kunden gehörenden Einträge in den anderen Tabellen gelöscht werden bis auf die Einträge von einer Tabelle, hier soll der Verweis auf einen anderen Kunden umgebogen werden.<br>
Den Fremdschlüssel der Tabellen mit den zu löschenden Einträgen habe ich so angelegt:
<pre>ALTER TABLE TabAdressen ADD CONSTRAINT Blub_KdnID FOREIGN KEY (KdnID) REFERENCES TabKunden (KdnID) ON DELETE CASCADE;</pre>
Den Fremdschlüssel der Tabellen mit den Einträgen, die geändert werden sollen so:
<pre>ALTER TABLE TabAnfragen ADD CONSTRAINT Foo_KdnID FOREIGN KEY (KdnID) REFERENCES TabKunden (KdnID) ON DELETE SET DEFAULT;;</pre>
Der Datentyp für KdnID ist "INTEGER DEFAULT 1 NOT NULL", ein Kundeneintrag mit der KdnID 1 existiert.<br>
Wenn ich jetzt versuche, einen Kunden zu löschen, bekomme ich einen "Validierungsfehler bei Feld KDNID ...."<br>
Nur wenn ich alle Fremdschlüssel cascadierend definiere, lässt sich ein Kundeneintrag auch löschen.<br>
Lässt sich mein Vorhaben überhaupt umsetzen ausser von Hand zu Fuß?
<br>
ich habe eine stark normalisierte DB mit mehreren Tabellen. Oberster Master ist eine Kundentabelle, das Masterfeld für die Verknüpfungen der untergeordneten Tabellen ist der Primärindex (KdnID) dieser Kundentabelle.<br>
Wenn jetzt der Kunde gelöscht wird, sollen die zu diesem Kunden gehörenden Einträge in den anderen Tabellen gelöscht werden bis auf die Einträge von einer Tabelle, hier soll der Verweis auf einen anderen Kunden umgebogen werden.<br>
Den Fremdschlüssel der Tabellen mit den zu löschenden Einträgen habe ich so angelegt:
<pre>ALTER TABLE TabAdressen ADD CONSTRAINT Blub_KdnID FOREIGN KEY (KdnID) REFERENCES TabKunden (KdnID) ON DELETE CASCADE;</pre>
Den Fremdschlüssel der Tabellen mit den Einträgen, die geändert werden sollen so:
<pre>ALTER TABLE TabAnfragen ADD CONSTRAINT Foo_KdnID FOREIGN KEY (KdnID) REFERENCES TabKunden (KdnID) ON DELETE SET DEFAULT;;</pre>
Der Datentyp für KdnID ist "INTEGER DEFAULT 1 NOT NULL", ein Kundeneintrag mit der KdnID 1 existiert.<br>
Wenn ich jetzt versuche, einen Kunden zu löschen, bekomme ich einen "Validierungsfehler bei Feld KDNID ...."<br>
Nur wenn ich alle Fremdschlüssel cascadierend definiere, lässt sich ein Kundeneintrag auch löschen.<br>
Lässt sich mein Vorhaben überhaupt umsetzen ausser von Hand zu Fuß?
<br>
Comment