Una manera sencilla sería poner un generador para el identificador.
Y en el trigger before insert llamarlo y obtener el id.
Otra manera, creo yo mas razonable, es desde el código delphi hacer la cosa en dos pasos.
Lo primero sería un select buscando el último nro de ID ingresado, a ver:
...iniciamos la transaccion y todo eso.
Código SQL
[-]
Nueva_ID = select max(id) + 1 from tabla
Luego, con eso ya podemos hacer el insert sin problemas:
Código Delphi
[-]
with query do
begin
close;
sql.clear;
sql.add('Insert into tabla values (:ID, :campo2, ...)');
parambyname('ID').asInteger:=Nueva_ID
try
execSQL;
except
raise;
end;
end;
...terminamos la transacción y listo.
Por último, eso de no tener clave primaria en una tabla no es bueno, procura siempre tenerla.
Espero te sirva. Esto no es lo mejor pero funciona bastante bien.