Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.183 Beiträge
 
Delphi 12 Athens
 
#7

AW: Bedingtes Insert/Update geht das?

  Alt 20. Feb 2015, 17:09
Schade, daß MySQL nicht sowas wie RETURNING kennt , dann ginge sowas
SQL-Code:
INSERT INTO Tabelle (Nr, D)
SELECT (:Nr, :D)
WHERE NOT (
  UPDATE Tabelle
  SET D = :D
  WHERE Nr = :Nr
    AND abs(D - :D) <= 0.02
  RETURNING true -- hier wird es schwer
)
UPDATE, wenn passend und wenn nicht TRUE, dann INSERT.


Alternativ muß man eben Beides machen.
SQL-Code:
UPDATE Tabelle
SET D = :D
WHERE Nr = :Nr
  AND abs(D - :D) <= 0.02;

INSERT INTO Tabelle (Nr, D)
SELECT (:Nr, :D)
WHERE NOT exists(SELECT *
                 FROM Tabelle
                 WHERE Nr = :Nr
                   AND abs(D - :D) <= 0.02);
(zuerst UPDATE und dann INSERT, damit das UPDATE das grade geINSERTe nicht nochmal sinnlos UPDATEd)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (20. Feb 2015 um 17:16 Uhr)
  Mit Zitat antworten Zitat