Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Fallunterscheidung für UPDATE oder INSERT per SQL

  Alt 22. Jul 2009, 11:30
Hallo,

Ansatz ist richtig.

Delphi-Quellcode:
var
  bExists: Boolean;

with Query do
begin
  SQL.Clear;
  SQL.Add('select count(*) from table');
  SQL.Add('where Id=:Id');

  ParamByName('Id').AsInteger:= ...;
  Open;
  try
    bExists:= not Query.IsEmpty // falls das nicht existiert RecordCount nehmen
  finally
    Close;
  end;

  SQL.Clear;
  if bExists then
  begin
   // update
  end
  else
  begin
   // insert
  end;
end;
Problem ist aber, dass Queries unter Pdx langam sind.
Die Umstellung könnte also zu einem Performance-Problem führen.

Ich hatte das damals per {$IFDEF SQL} (selbst definierter Schalter) gemacht,
der alte Code war also noch vorhanden.

Das SQL.Clear; auch am Anfang mache ich übrigens,
weil ich meistens ein Query für mehrere Tabellen benutze.


Hier noch ein netter Artikel
Pdx -> Interbase / Firebird

Heiko
Heiko
  Mit Zitat antworten Zitat