Du kannst einen Generator nutzen:
...
Wenn Du eine neue ID erstellt hast, schreibst Du diese per Insert insert into LastID (DeineID) values (DerWertDerID);
in diese Tabelle.
Wann rufe ich das insert into auf? Wie ist sichergestellt, dass das insert into mit der zuletzt erzeugten ID aufgerufen wird? So klappt das z.B. *nicht*:
Code:
procedure GetNextID
a := ErzeugePrefix;
if Bedingung then
b := gen_id(MeinGenerator, 1);
else
b := '';
c := ErzeugeSuffix;
result := a+b+c;
insert into LastID (DeineID) values (DerWertDerID)
end;
Beispiel: Benutzer A erzeugt mit gen_id die Nr 1. Jetzt kommt schon Benutzer B und erzeugt die Nr 2 mit gen_id und schreibt diese mit insert into in die LastID-Tabelle. Nun wird erst die letzte Zeile der SP vom Benutzer A aufgerufen und schon steht die 1 als falsche letzte ID in der LastID-Tabelle.