Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Bedingtes Insert/Update geht das?

  Alt 20. Feb 2015, 18: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)
$2B or not $2B

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