Announcement

Collapse
No announcement yet.

On Delete Set Default

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • On Delete Set Default

    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>

  • #2
    Hallo Florian,<BR>
    so wie es aussieht, sollte es gehen.<BR>
    Ist wiklich der Datentyp für KdnId auch in der Tabelle TabAnfragen als default 1 angelegt?<BR>
    Fran

    Comment


    • #3
      Hallo Frank,<br>
      <br>
      danke für die Nachfrage, das war mein Denkfehler, ich habe das Default 1 nicht in der TabAnfragen definiert sondern in der Mastertabelle. Sowas von blöd aber auch...<br>
      <br>
      Nochmals danke<br>
      Floria

      Comment

      Working...
      X