Moin...
@jobo:
...mein geliebtes "returning" auch im
MSSQL.
...ich habe mal was probiert (was funktioniert):
Variante 1:
1. Insert Statement absetzen (ExecSQL)
2.
Query: 'select IDENT_CURRENT(Bla) as LastID' absetzen
3. LastID :=
Query.FieldByName(LastID).AsInteger
Variante 2:
1. "Script" mit
Query.Open
2.
Code:
declare @LastID table (LastID int)
insert into Bla
(Blubb)
OUTPUT INSERTED.ID into @LastID
values
(99)
select LastID from @LastID
3. LastID :=
Query.FieldByName('LastID').AsInteger (gleiche
Query )
PS:
nur OUTPUT INSERTED.ID läuft in einen Fehler:
Zitat:
Für die Bla-Zieltabelle der DML-Anweisung dürfen keine Trigger aktiviert sein, wenn die Anweisung eine OUTPUT-Klausel ohne INTO-Klausel enthält
Die Replikation legt aber reichlich Trigger an.
Welche Variante würdet ihr bevorzugen?
Imho ist die sicherste die Variante 2.
Bedeutet aber auch, das alle insert Statements anpaßt werden müssen. (23 aktuell)
Danke...