Gibt es in
IB ein Äquvalent zu den
Package-variablen in Oracle? Also eine Variable, deren Wert sich nur in der UGA befindet.
Keine Session kann den Wert einer anderen überschreiben.
Dadurch könnte man unabhängig von parallen Transaktionen anderer Sessions herausfinden, welche ID der neue DS hat.
Eine
IMHO eklige Lösung, aber vielleicht funktioniert es. Wenn nicht, dann warte bis
IB oder
FB ein Gegenstück zu RETURNING hat.
SQL-Code:
CREATE TRIGGER TABLE8_BI0 FOR TABLE8
ACTIVE BEFORE INSERT POSITION 0
AS
begin
IF (NEW.ID IS NULL) THEN
NEW.ID = GEN_ID (GEN_TABLE8_ID,1);
Shema.Package.Variable := New.ID;
end
OT:
@Hansa
Übrigens,du verhinderst nicht, dass der User beim Öffnen der Tabelle mit einem anderen Programm irgendeinen Mist reinschreibt.
Bei einem INSERT sollte also
immer die PK aus der Sequence beschrieben werden:
SQL-Code:
CREATE TRIGGER TABLE8_BI0 FOR TABLE8
ACTIVE BEFORE INSERT POSITION 0
AS
begin
NEW.ID = GEN_ID (GEN_TABLE8_ID,1);
end