Einzelnen Beitrag anzeigen

Robert_G
(Gast)

n/a Beiträge
 
#23

Re: Interbase: Generierte ID ermitteln ?

  Alt 15. Okt 2004, 19:57
Ich wollte mich dieses WE mal mit FB beschäftigen, da ich für ein kleineres Projekt(, dass in naher Zukunft anläuft) eine passende kleine, günstige DB suche.
Deshalb mal meine Frage: Gibt es keinen konsistenten Weg um den PK eines neuen DS zu bekommen?
Ich meine im Normalfall würde ein Standardtrigger von mir, zu PSQL übersetzt, so aussehen (keine Gewähr, ich habe keinen Plan von PSQL ):
SQL-Code:
CREATE TRIGGER SomeTable$PKtrig FOR SomeTable
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin
  if (INSERTING) then
    NEW.PK = GEN_ID(SomeTable$PKseq, 1);
  if (UPDATING) then
    NEW.PK = OLD.PK;
end
Es wird also _IMMER_ der PK aud der Sequence genommen und _KEINE_ Änderung des PK ermöglicht.
Die Frage ist jetzt nur: Wie zum Geier würde ich an die PK nach einem INSERT bekommen?
Das gibt's ja in FB/IB nicht:
SQL-Code:
INSERT INTO SomeTable
 (A, B, C)
VALUES
 (:iA, :iB, :iC)
RETURNING PK INTO :oPK
Alle anderen Vorschläge würden doch bewirken, dass jeder, der an dem Projekt arbeitet, _IMMER_ erst den PK aus der _RICHTIGEN_ Sequence holen muss. (Eine schöne Gelegenheit für einen unnötigen Bug. )

Wie sieht es mit FB 2.0 aus, wurde dort schon eine Lösung für das Problem gefunden?
  Mit Zitat antworten Zitat