com certeza triggers são ótimos meios de incrementar a chave primaria 
não sei se me expressei direito, o que quiz dizer é que com uma trigger gerando o valor por um generator no firebird se o seu BD for muito “movimentado” você não tem como ter certeza de qual valor da chave primaria do registro que você acabou de incluir
neste cado, acho que a unica solução é:
select gen_id(meu_generator,1) from rdb$database
pegar o valor retornado e inserir o registro,
este valor é impossivel de ser repetido pois os generators são entidades independentes de transação
então não teria problema nenhum com FKs
soi só isto que eu quiz dizer 
mas com certeza, uma trigger é uma ótima maneira de fazer isto, até é por isto que no FB nos temos triggers before e after insert, delete e update 