🎄 Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! 🎄
❤️ Bitte helfen Sie uns dabei, das Ziel für 2025 zu erreichen. Vielen Dank! ❤️

❤️ HELFEN SIE JETZT >> << HELFEN SIE JETZT ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗


Index des primary key aktualisieren

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Heiko
Beiträge: 19
Registriert: So 2. Okt 2016, 17:49

Index des primary key aktualisieren

Beitrag von Heiko » Do 11. Dez 2025, 06:39

Hallo zusammen,
meine alte interne hsql-base-Datenbank habe ich neu als externe firebird-Datenbank aufgesetzt. Zum Schluss habe ich die Daten der Tabellen von der alten in die neue DB kopiert, inkl. dem primary key-Feld, um die Verknüpfungen bei zu behalten. Wenn ich jetzt einen neuen Datensatz einfügen möchte, kommt diese Fehlermeldung
firebird_sdbc error:
*violation of PRIMARY or UNIQUE KEY constraint "INTEG_1" on table "rechnung"
*Problematic key value is ("rg_id" = 32)
caused by
'isc_dsql_execute'
Offenbar blieb der Index des primary key stehen, d.h. es gibt jetzt durch das Einfügen des alten Schlüsselfeldes schon die Zahl 32.
Wie kann ich den Index auf das aktuelle Maximum setzen, damit er dort weiter zählt?
Oder muss ich etwas grundlegend anders machen beim Daten übertragen?
Viele Grüße
Heiko

RobertG
* LO-Experte *
Beiträge: 2917
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Index des primary key aktualisieren

Beitrag von RobertG » Do 11. Dez 2025, 10:37

Hat die Tabelle einen AutoWert?
Dann hilft

Code: Alles auswählen

ALTER TABLE "Tabellenname"
ALTER "Feldname" RESTART WITH <letzter_Feldwert>;
in Extras SQL.
Du trägst als "Tabellenname" natürlich "rechnung" ein. "Feldname" ist der Name des AutoWert-Feldes. Als <letzter_Feldwert> das momentane Maximum des AutoWert-Feldes.
Der Schlüsselwert wird übrigens mit jeder Fehlermeldung um 1 hoch gesetzt. Das heißt beim nächsten Mal, dass eben nicht die 32, sondern die 33 versucht wird. Das liegt daran, dass Firebird das über einen Generator regelt, der stumpf bei jedem Auslösen um 1 ansteigt.
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Heiko
Beiträge: 19
Registriert: So 2. Okt 2016, 17:49

Re: Index des primary key aktualisieren

Beitrag von Heiko » Do 11. Dez 2025, 11:53

Hallo Robert,
ja, es geht um den Autowert. Es hat funktioniert, firebird zählt jetzt wieder korrekt, obwohl der Befehl zu dieser Fehlermeldung geführt hat:
1: firebird_sdbc error:
*SQL error code = -504
*Invalid cursor reference
*Cursor is not open
caused by
'isc_dsql_fetch'
Hat das noch etwas zu bedeuten? Der Zähler ist ja jetzt neu justiert, aber deutet das ggf. auf etwas anderes hin?
Viele Grüße
Heiko

RobertG
* LO-Experte *
Beiträge: 2917
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Index des primary key aktualisieren

Beitrag von RobertG » Do 11. Dez 2025, 21:18

Von solch einer Meldung habe ich auch schon einmal gelesen. Ist mir aber noch nicht passiert.

Vielleicht grundsätzliche Hinweise zu Extras → SQL. Wenn Du dort Befehle eingibst sollten Formulare, Abfragen und Tabellen geschlossen sein. Im Anschluss sollten im Tabellencontainer über Ansicht → Tabellen aktualisieren die Änderungen an die Tabellen weiter gegeben werden. Die GUI bekommt nämlich von den Eingaben in Extras → SQL nichts mit.
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten