Ver Mensaje Individual
  #1  
Antiguo 22-05-2020
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Reputación: 18
mjjj Va por buen camino
Delphi INSERT clave Primaria

Estimados, estoy por empezar un nuevo proyecto con Delphi XE5, Firebird 2.5 y una fuente de dato externa.

Diariamente realizaré una consulta a la fuente externa de los datos de ese día y los resultados los voy a registrar en Firebird por medio de Delphi.
Si por algún motivo realizo la consulta más de una vez en el día se podrían duplicar registros.

La idea es recorrer los registros de la consulta e ir Insertándolos en Firebird, pero quiero evitar consultar por la llave primaria previamente si existe el registro antes de insertarlo.

Como puedo hacer más eficiente esto, quizás el mismo motor de Firebird pueda descartar cuando esto ocurra y que la sentencia INSERT este dentro de un TRY.

Código Delphi [-]
...
clientdataset1.First;
while not clientdataset1.Eof do
begin

inc(contador);

try

ibsql1.sql.Clear;
ibsql1.SQL.Add('insert into tabla (llave, descripcion, monto)');
ibsql1.SQL.Add('values');
ibsql1.SQL.Add('(:llave, :descripcion, :monto)');
ibsql1.ExecQuery;
except

end;


clientdataset1.Next;
end;
...


Se les ocurre alguna otra forma de hacerlo ??

Saludos.
Responder Con Cita