Seite 1 von 3

Beziehung läßt sich nicht erstellen

Verfasst: Sa 26. Jan 2019, 12:52
von Nordlicht00
Hallo,

Ich habe bisher mit Access gearbeitet und bin dort auch recht fitt was Datenbankentwicklung angeht. Aber nun versuche ich auf LibreOffice umzusteigen und da fühle ich mich wieder wie ein absoluter Anfänger. :?

Ich habe versucht, bei einer kleinen Test-Datenbank eine Beziehung mit Referentieller Integrität zwischen zwei Tabellen (enthalten jeweils 3 Datensätze zum Testen) herzustellen, Aber das gelingt nicht. Es wird mir ein Fehler angezeigt, mit dem ich nichts anfangen kann.

Zwei Tabellen:
Hautptabelle mit den Feldern
Haupttabelle_PK (Primärschlüssel)
Untertab_FK (Fremdschlüssel)
Textfeld

Untertabelle mit den Feldern
Untertabelle_PK (Primärschlüssel)
Anzeigfetext

Beziehung soll sein zwischen Untertabelle_PK und Untertab_FK.
Das gelingt aber nicht, es wird ein Fehler angezeigt:

Code: Alles auswählen

Fehlercode: 1

firebird_sdbc error:
*violation of FOREIGN KEY constraint "INTEG_13" on table "Haupttabelle"
*Foreign key reference target does not exist
*Problematic key value is ("Untertrab_FK" = 2)
caused by
'ALTER TABLE "Haupttabelle" ADD  FOREIGN KEY ("Untertrab_FK") REFERENCES "Untertabelle" ("Untertabelle_PK")'
In der Untertabelle ist der Wert "2" aber vorhanden, daher weiß ich nicht, wieso da angegeben ist, daß der Wert "2" in Untertab_FK ein Problem sein soll. Beide Schlüsselfelder sind auch als BIGINT definiert (der PK natürlich als Autowert).

Re: Beziehung läßt sich nicht erstellen

Verfasst: Sa 26. Jan 2019, 14:14
von RobertG
Hallo Nordlicht,

da Du schreibst, dass sowohl das Fremdschlüsselfeld als auch das Schlüsselfeld der anderen Tabelle beide die gleiche Eigenschaft haben und der Fremdschlüsselwert auch in den Schlüsselwerten steht lässt sich da ohne die Datei schwerlich etwas mehr zu schreiben. Hänge doch einfach die Datei hier an (packen oder nur die Endung umschreiben - *.odb-Dateien gehen in diesem Forum nicht).

Mit welcher LO-Version arbeitest Du denn?

Gruß

Robert

Re: Beziehung läßt sich nicht erstellen

Verfasst: Sa 26. Jan 2019, 15:17
von Nordlicht00
Hallo Robert,

Hier ist die DB. Ist nur eine Test-DB zum Erlernen von Base.

Re: Beziehung läßt sich nicht erstellen

Verfasst: Sa 26. Jan 2019, 15:19
von Nordlicht00
Hallo Robert,

zu schnell auf Absenden geklickt. ;)
Es ist die aktuelle Version (vor kurzem erst installiert) 6.1.4.2

Re: Beziehung läßt sich nicht erstellen

Verfasst: Sa 26. Jan 2019, 17:49
von RobertG
Hallo Nordlicht,

ich habe die Beziehung ohne Probleme erstellen können. Bei mir ebenfalls LO 6.1.4.2, allerdings OpenSUSE 64bit rpm Linux.

Da ich kein Windows-System habe kann ich nicht überprüfen, ob da ein Windows-Bug vorhanden ist.

Gruß

Robert

Re: Beziehung läßt sich nicht erstellen

Verfasst: Sa 26. Jan 2019, 18:13
von Nordlicht00
Hallo Robert,

Danke.
LibreOffice ist mir gerade abgestürzt. Nach dem Neustarten konnte ich die Beziehung plötzlich auch erstellen. Seltsam. Da muß also schon lange vor dem Absturz was kaputt gegangen sein.

Re: Beziehung läßt sich nicht erstellen

Verfasst: Sa 26. Jan 2019, 22:18
von Nordlicht00
Hallo,

Noch eine Frage zu Beziehungen. Im Kontextmenü "Bearbeiten" der Beziehung gibt es kein Feld "referentielle Integrität". Ist diese automatisch immer gesetzt oder gibt es das nicht in LibreOffice?

Re: Beziehung läßt sich nicht erstellen

Verfasst: Sa 26. Jan 2019, 22:27
von RobertG
Hallo Nordlicht,

ohne referentielle Integrität lassen sich Beziehungen nicht erstellen. Deshalb kommt ja die Fehlermeldung, wenn ein Wert in einem Fremdschlüsselfeld nicht in einer Tabelle existiert, die den Primärschlüssel dazu hat.

Gruß

Robert

Re: Beziehung läßt sich nicht erstellen

Verfasst: Sa 26. Jan 2019, 23:46
von Nordlicht00
Hallo Robert,

Gut, also ist Referentielle Integrität immer vorhanden bei Beziehungen (bei Access muß man das explizit anhaken).

Ich habe übrigens herausgefunden, warum ich die Beziehung auch bei korrekten Schlüsseldaten nicht erstellen konnte. Gab es einmal einen Fehler wegen Schlüsselverletzung, so bleibt diese Fehlermeldung auch nach Korrektur der Schlüsselwerte bestehen und die Beziehung läßt sich nicht erstellen, und zwar solange bis LibreOffice neu gestartet wird. Nach dem Neustarten von LibreOffice läßt sich die Beziehung dann plötzlich erstellen, und zwar ohne daß an den Tabellen und deren Inhalt noch was geändert wurde.

Auch läßt sich ein Autowert nur direkt bei der ersten Erstellung der Tabelle einstellen. Wurde die Tabelle erstmal gespeichert, läßt sich dies nicht mehr Einstellen, auch wenn die Tabelle noch gar keine Daten enthält. Da bleibt nur, die Tabelle zu löschen und neu zu erstellen. :(
Manchmal geht auch das Primärschlüsselfeld verloren bei Tabellenänderungen. Übel wenn die Tabelle bereits Daten enthält. Wann genau das Eintritt habe ich noch nicht herausgefunden.
Auch andere elementare Dinge habe ich bisher noch nicht herausgefunden: wie benennt man Tabellen um, wie verschiebt man die Reihgenfolge von Tabellenfeldern (ich möchte den Primärschlüssel immer an erster Stelle stehen haben, dann die Fremdschlüssel und erst danach die anderen Felder, aber bei einer Änderung an einer Tabelle war das Primärschlüsselfeld plötzlich an letzer Stelle und ich weiß nicht wie es dazu kam).

Re: Beziehung läßt sich nicht erstellen

Verfasst: So 27. Jan 2019, 09:02
von RobertG
Hallo Nordlicht,

Firebird lässt sich zwar grundsätzlich bereits als interne Datenbank nutzen, ist aber vom Handling noch weit entfernt von der bisherigen internen HSQLDB. Dort könntest Du all das, was Du anmerkst, erledigen: AutoWert später erstellen, Tabellen umbenennen, Änderungen direkt übernehmen wie bei den Beziehungen ...

Es gibt da leider noch so einige Bugs, die auf eine Behebung warten. Anfangs ließen sich für Firebird nicht einmal Beziehungen definieren ...

Gruß

Robert