¿Has comprobado que entra alguna vez a la parte except?
Código Delphi
[-]
select * from tabla1;
while not tabla1.eof
try
update table 2...
except
Log('INSERT')
insert into tabla 2...
end;
table1.next
end;
Según tengo entendido, si un update no "toca" ningún registro no falla.