--- In firebird-support@yahoogroups.com, Paul Vinkenoog wrote:
....
>
> It is often more useful to define the BI trigger as:
>
> create trigger T_BI for T before insert as
> begin
> if (new.ID is null) then new.ID = next value for SEQ;
> end^
>
> (but if you had done that, you wouldn't have detected the inconsistency below ;-))
Well, I've seen that but I don't like the idea. An auto-generated ID should be auto-generated in all cases. Imagine for example someone inserting a random higher value that will one day come into conflict with the sequence-generated...
....
>
> insert into T values (new.ID) returning T.id into :new.id;
>
> That would solve the whole problem (he said without having tested it).
Yes, that works, but I consider it a workaround :)
The same thing happens for calculated and DEFAULT fields as well.