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)