Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#10

AW: Letzte vergebene Nummer speichern

  Alt 5. Aug 2022, 13:16
Du kannst einen Generator nutzen:

Dazu benötigst Du eine weitere Tabelle in der Form:
SQL-Code:
create Table LastID
(
  GeneratorID Integer not null,
  DeineID Integer not null -- oder welcher Type das auch immer sein mag.
);
Dazu einen Generator: CREATE GENERATOR GEN_LastID;

Und noch einen Trigger:
SQL-Code:
CREATE TRIGGER TR_LastID_BIU FOR LastID ACTIVE
BEFORE INSERT OR UPDATE POSITION 0
AS
BEGIN
  if ((NEW.GeneratorID is NULL)) then NEW.GeneratorID = Gen_ID(GEN_LastID, 1);
END^
Wenn Du eine neue ID erstellt hast, schreibst Du diese per Insert insert into LastID (DeineID) values (DerWertDerID); in diese Tabelle.

Willst Du nun die letzte Deiner IDs ermitteln, bekommst Du die per select first 1 DeineID from LastID order by GeneratorID desc;

Eventuell noch 'nen absteigenden Index auf die GeneratorID und regelmäßig nicht mehr benötigte Sätze aus der Tabelle LastID entfernen. Dazu könntest Du der Tabelle LastID ggfls. noch 'ne TimeStamp-Spalte gönnen und im Trigger diese mit CURRENT_TIMESTAMP befüllen, dann wird das Entfernen alter Sätze einfacher und Du kannst sogar nachvollziehen, in welcher Reihenfolge Deine IDs erstellt wurden.

Wäre das eventuell 'nen Versuch wert?
  Mit Zitat antworten Zitat