Pero este detalle es tan interesante y me llevo su tiempo darme cuenta por que tenia un error y por que se ejecutaba un trigger antes que otro.
Se las hago corta los trigger tienen position number que es basicamente el orden en cual los trigger se disparan. Los trigger con position menor se van a ejecutar antes.
create trigger biu_booksactive before insert or update position 3
on books
as
begin
if (new.id is null)
then new.id = next value for gen_bookids;
end