Zitat von
mschaefer:
Jetzt holen wir Stevie ins Boot ...
Wenn, dann hol ich euch ins (Zeos-)Boot!
Aber Scherz beiseite, bin mal gespannt, was da nachher kommt.
P.S. Für
MySQL und SQLite funktioniert das mit dem AutoInc-Werte holen.
Bei
MySQL wird das folgendermaßen gemacht (ZDbcMySqlResultSet.pas):
Delphi-Quellcode:
{**
Posts updates to database.
@param Sender a cached result set object.
@param UpdateType a type of updates.
@param OldRowAccessor an accessor object to old column values.
@param NewRowAccessor an accessor object to new column values.
}
procedure TZMySQLCachedResolver.PostUpdates(Sender: IZCachedResultSet;
UpdateType: TZRowUpdateType; OldRowAccessor, NewRowAccessor: TZRowAccessor);
var
Statement: IZStatement;
ResultSet: IZResultSet;
begin
inherited PostUpdates(Sender, UpdateType, OldRowAccessor, NewRowAccessor);
if (UpdateType = utInserted) and (FAutoColumnIndex > 0)
and OldRowAccessor.IsNull(FAutoColumnIndex) then
begin
Statement := Connection.CreateStatement;
ResultSet := Statement.ExecuteQuery('SELECT LAST_INSERT_ID()');
try
if ResultSet.Next then
NewRowAccessor.SetLong(FAutoColumnIndex, ResultSet.GetLong(1));
finally
ResultSet.Close;
Statement.Close;
end;
end;
end;
Ich denke, an dieser Stelle sollte man bei den anderen Protokollen auch ansetzen.
Und da dann mit der angesprochenen Eigenschaft Sequenz/Generator-Name.