In Delphi the TFDQuery component has a property "aggregates" which represents a lightweight version of client side aggregate fields to Data Sets.
If you insert "MAX(ID)" you get a number that is one less than the next free number of the ID.
If this could be used to calculate the ID-Field it would be a very easy method to have an autogenerator for the ID-Field for every kind of database.
But I doubt because it is called "client side". I don't know exactly what that means. Doesn't it calculate the aggregate for the whole table but only for a local partition of the records? In the last case it could perhaps be used for an auto generator once it is correctly initialized.