Datensätze einfügen klappt nicht

Hallo,

ich habe 2 Tabellen die zueinander in einer 1:1 Beziehung stehen. Theoretisch würde es ausreichen eine Gesamttabelle daraus zu machen aber dafür wäre es jetzt zu spät.

Beide Tabellen haben den gleichen Primärschlüssel. Wenn ich jetzt einen Datensatz in eine Tabelle einfügen will, kommt es zum Fehler. Da der Primärschlüssel des neuen Datensatzes nicht in der 2. Tabelle zu finden ist.

Mit einer Transaktion scheint es auch nícht zu klappen.

Kann mir jemand weiterhelfen.

Danke,
Christian

Hallo Christian!

ich habe 2 Tabellen die zueinander in einer 1:1 Beziehung
stehen. Theoretisch würde es ausreichen eine Gesamttabelle
daraus zu machen aber dafür wäre es jetzt zu spät.

Um ein falsches Datenbankdesign zu reparieren darf es NIE zu spät sein. Schliesslich bessert man ja auch Bugs aus - und nichts anderes in grösserem Maßstab ist ein falsches DB-Design.

Beide Tabellen haben den gleichen Primärschlüssel. Wenn ich
jetzt einen Datensatz in eine Tabelle einfügen will, kommt es
zum Fehler. Da der Primärschlüssel des neuen Datensatzes nicht
in der 2. Tabelle zu finden ist.

Sehe ich das richtig: Der Primary Key von Tabelle A ist als Foreign Key in Tabelle B definiert und umgekehrt?

Falls dem so ist kämen folgende Lösungsansätze in Frage:

  1. Zumindest unter Oracle gibt es „deferred constraints“. Dabei wird der Constraint nicht bei jedem Statement sondern erst beim Commit überprüft. So lange du dann also brav beide INSERTs/UPDATEs/DELETEs innerhalb der selben Transaktion machst müsste das dein Problem lösen.

  2. Einen der beiden Fremdschlüssel wegschmeissen. Da macht aus deinem falschen DB-Design allerdings katastrophales DB-Design. Die Inkonsistenzen, die das theoretisch erlaubt werden mit Sicherheit auch auftreten, jede Wette. Einigermassen abfangen kannst du das noch, indem du zumindest auf einer Seite einen Trigger verwendest, aber richtig wird’s dadurch immer noch nicht.

  3. Streng zu empfehlen: In den sauren Apfel beissen und das Design ausbessern (sprich: aus 2 mach 1).

Kann mir jemand weiterhelfen.

Ich hoffe da ist für dich was dabei…

Gruß
Martin

versuchs mal so…
Moien,

Primärschlüssel in zweite tabelle einfügen oder Beziehung löschen…

Bernd