Seite 1 von 1

Autoinkrementwerte automatisch oder per SQL-Befehl?

Verfasst: Di 6. Nov 2018, 17:27
von Freischreiber
Hallo,
vor allem: Hallo Robert,

nachdem ich im Handbuch schon öfter den Abschnitt "Autoinkrementwerte mit der externen HSQLDB" gesehen habe (zuletzt im Base_Gesamtband_einseitig_V61.pdf, Seite 580), habe ich jetzt die beiden empfohlenen Einstellungen in meiner bestehenden DB einfach einmal gesetzt, also "Generierte Werte berücksichtigen" mit
GENERATED BY DEFAULT AS IDENTITY(START WITH 0)
und
CALL IDENTITY().

Nur: verstanden habe ich sie nicht. Als Nutzer einer gesplitteten HSQL-Datenbank bin ich wohl betroffen. Aber wenn ich es richtig verstehe, kommen die Einstellungen nur beim Erstellen neuer Tabellen zum Zug.

Neue Tabellen habe ich nach dem Splitten bisher mit SQL-Befehl CREATE TABLE erstellt. Dort taucht immer explizit mit auf: "...GENERATED BY DEFAULT AS IDENTITY".

2 Fragen von mir:

1. Ist die Einstellung bei "Generierte Werte berücksichtigen" dasselbe?
Bewirkt sie, daß ich zukünftig Tabellen auch bei der gesplitteten DB per GUI erstellen kann?
Oder kann ich einfach nur das CREATE TABLE in Zukunft ohne den Zusatz "...GENERATED BY DEFAULT AS IDENTITY" machen?

2. Ist die Einstellung "Generierte Werte berücksichtigen" ungefährlich? Oder soll ich sie lieber wieder rückgängig machen?

Ich bin noch auf LO 5.2.7.2.

Gruß
Freischreiber

Re: Autoinkrementwerte automatisch oder per SQL-Befehl?

Verfasst: Mi 7. Nov 2018, 19:52
von RobertG
Hallo Freischreiber,

Code: Alles auswählen

GENERATED BY DEFAULT AS IDENTITY(START WITH 0)
findest Du im Kapitel "Tabellenerstellung" so ca. S. 120 im aktuellen Handbuch. Das ist der Befehl, den die GUI an Deine externe Datenbank weitergeben muss, damit die einen automatisch hochzählenden Wert hat. Das hat erst einmal nur etwas mit der Erstellung der Tabellen zu tun.

Code: Alles auswählen

CALL IDENTITY()
findest Du im Kapitel "Eingabemöglichkeiten über SQL direkt" > "Neue Datensätze einfügen" so ca. S. 136 im aktuellen Handbuch. Damit wird der gerade neu erstellte automatische Wert aus der Datenbank ausgelesen und für Dich sichtbar in die Tabelle übertragen. Das trifft laufend beim Einfügen neuer Datensätze zu.

Ich habe die Einstellung zur externen HSQLDB nur für Testzwecke damals aufgebaut. Ich nutze das selbst nicht weiter. In sofern: Wenn die Erstellung einer Tabelle in der GUI mit diesen angegebenen Werten unter LO zur Zeit läuft, dann wäre mir an einer Rückmeldung gelegen. Im Handbuch steht noch immer, dass LO da einen falschen Code produziert, indem NOT NULL an der falschen Stelle einfügt und damit unbrauchbaren Code erzeugt. Die Einstellung mit den generierten Werten ist natürlich für Dich im Bereich CALL IDENTITY() sinnvoll. Ob inzwischen Base das automatisch macht kann ich mangels erneutem Test auch nicht sagen.

Gruß

Robert