Con un trigger y un generador podrías solucionar esto:
Código SQL
[-]
create trigger TABLA_BI0 for TABLA active before insert position 0
as
begin
if ( new.CAMPO_ID = 0 ) then new.entrada = gen_id( contador_id , 1 ) ;
end
También podrías hacer un procedimiento para recalcular el campo ID.
Código SQL
[-]
create procedure REORDENAR
as
declare variable clave char(8);
declare variable id integer;
begin
contador = 0;
FOR select RDB$DB_KEY from TABLA do
into :clave
DO
begin
update TABLA
set CAMPO_ID = :id
where RDB$DB_KEY=:CLAVE;
end
end