Open petershr01 opened 3 years ago
Guten Morgen, versuchen Sie doch mal ohne Nicht-Leerbeschränkung erzwingen. Das wirkt sich aber nur auf die QGIS-eigene Datenmaske aus. Bei mir sind die Einstellungen allerdings gleich und es geht. IMHO sind zwei Fragen noch unbeantwortet: Warum zieht sich QGIS Werte aus der Sequenz und warum schlägt der Trigger bei Ihnen nur dann zu, wenn die gid beim Speichern NULL ist? Beides lässt sich aber von hier aus nicht beantworten.
Das deaktivieren von 'Nicht-Leerbeschränkung erzwingen' hat keine Auswirkung, gleiches Verhalten.
Ich habe mal folgenden Versuch durchgeführt:
Eine Zuweisung der gid durch den Client (QGIS) ist nicht zielführend, weil
Sollte nur ein Test sein und hat ja auch nur wieder eine Fehlermeldung erzeugt. Ich hatte danach das Ganze mit diesem Eintrag durchgeführt: 'maximum("gid") + 2' Auch da gab es die gleiche Fehlermeldung, also "Schlüssel existiert bereits", obwohl ja die erste neue "gid" den Wert 3033 hatte aber der Aktuelle Wert nur 3032. Im Web habe ich Bug-Meldungen und Foreneinträge gefunden über diesen Fehler, allerdings sehr alte. Auch als QGIS Bugs, aber halt noch die 1er oder 2er Version. Da Sie diesen Fehler ja nicht haben, muss irgendetwas hier nicht richtig konfiguriert sein. ABER, wie ich ja schon w.o. schrieb, auf meinem Laptop habe ich das selbe Problem. Ich weiß jetzt nur nicht mehr welche PostgreSQL/PostGIS Version dort installiert ist. Ich denke wir belassen es erst einmal dabei, sollte es neue Erkenntnisse geben, können die ja hier eingetragen werden.
Wenn mehrere Objekte per 'Copy and Paste' in eine editierbare DB-Tabelle eingefügt werden, und auch wenn ich ein neues Flächenobjekt zeichne, kommt immer unten stehende Fehlermeldung (Beispiel, auch bei den anderen Layern, siehe Bild 1).
_Konnte Änderungen am Layer FP_GruenFlaeche (editierbar) nicht festschreiben
Fehler: FEHLER: 39 Objekte nicht hinzugefügt. Datenanbieterfehler: PostGIS-Fehler beim Attributhinzufügen: FEHLER: doppelter Schlüsselwert verletzt Unique-Constraint »FP_Gruen_pkey« DETAIL: Schlüssel »(gid)=(2)« existiert bereits. CONTEXT: SQL-Anweisung »INSERT INTO "FP_Landwirtschaft_Wald_und_Gruen"."FP_Gruen"(gid) VALUES(2);« PL/pgSQL-Funktion "XP_Basisobjekte"."child_of_XPObjekt"() Zeile 43 bei EXECUTE
Meine derzeitige Umgehungslösung, bei einem Objekt wird "händisch" die nächst höchste ID eingetragen, dann wird die Einarbeitung gespeichert. Ich weiß, so arbeitet man nicht mit Daten in einer DB.
Ist das Einfügen von Objekten per 'Copy and Paste' generell möglich? Für die Übertragung des derzeitigen Bestandes aus einer ORACLE-DB, ist das aber ein schneller Weg.
Ist ggf. die Datenbank nicht richtig eingerichtet, habe jetzt schon mehrfach die SQL-Dateien für das Anlegen einer XPlan-DB verwendet. Dabei sind auch nie Fehlermeldungen gekommen. Aber die automatische Generierung die 'gid' funktioniert ja scheinbar nicht.
Bild
Vielen Dank für Ihre Bemühungen.