Hallo zusammen,
in meinem Angebotsprogramm aus der Kombi LibeOffice Base und Postgresql was bislang super funktioniert stellt sich nun das Problem einer Mehrfachbenutzerumgebung.
Konkret:
Es gibt eine Positionstabelle in der die Positionen des Angebots enthalten sind.
Was ist jedoch wenn 2 Anwender zeitgleich ein Angebot erstellen wollen. Es gibt dann eine Mischung der Positionen der beiden Anwender.
Wenn ich nun die Doku richtig verstanden habe sollte “create temporary…” hier die Lösung sein.
Ich habe nun in der Anwendung verschiedene Versuche unternommen, das zu realisieren. Es scheitert jedoch an verschiedenen Effekten.
Die Tabelle im local-Beich ist “gedroppt”. Zum Start der ANG-Bearbeitung lege ich die Tabelle als “temporary” an. Das läuft auch soweit durch.
Beim ersten Insert auf die Tabelle mault das System:
Die Dateninhalte konnten nicht geladen werden.
/home/abuild/rpmbuild/BUILD/libreoffice-7.2.3.2/connectivity/source/commontools/dbtools.cxx:751
pq_driver: [PGRES_FATAL_ERROR]FEHLER: Relation »public.hc_angvorpos« existiert nicht
ZEILE 1: SELECT * FROM "public"."hc_angvorpos"
^
(caused by statement 'SELECT * FROM "public"."hc_angvorpos"') /home/abuild/rpmbuild/BUILD/libreoffice-7.2.3.2/connectivity/source/drivers/postgresql/pq_statement.cxx:262
Der “Select *” oben stammt definitiv nicht aus meinem Code!
Aus den Fehlermeldungen ergeben sich zunächst zwei Fragen für mich.
- wie kommen ich an die temporäre Tabelle (laut doku wird einen Temporäre Tabelle gleichen Names überladen!?)
- Die Temporäre Tabelle “lebt” solange die Sitzung aktiv ist. Kann ich in diesem Zusammenhang prüfen ob die Tabelle bereits angelegt ist?
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.sdbc.SQLException
Message: pq_driver: [PGRES_FATAL_ERROR]FEHLER: Relation »hc_angvorpos« existiert bereits
(caused by statement 'CREATE TEMPORARY TABLE hc_angvorpos (id_apo SERIAL NOT NULL UNIQUE PRIMARY KEY, vid_ako Integer, vid_anschl Integer, vid_anart Integer, vid_augrp Integer, apocalcpos Integer, apobez varchar(40), apobez_2 varchar(50), apobez_3 varchar(40), apobez_4 varchar(40), apoanz numeric(6,2), apoeinheit varchar(10), apoezpreis numeric(8,2), apoberechmod varchar(10), saneu_usr character varying(20) DEFAULT "current_user"());') /home/abuild/rpmbuild/BUILD/libreoffice-7.2.3.2/connectivity/source/drivers/postgresql/pq_statement.cxx:262.
Möglicherweise habe ich das ganze System auch falsch verstanden.
Um Aufhellung bittet
heidielx