Das nennt man Upsert
. Die MySQL-Syntax ist ziemlich seltsam, aber Sie können es tun, etwa so:
INSERT INTO eventcounter (userID, eventID, activityID) VALUES(1,1,1)
ON DUPLICATE KEY UPDATE
activityID = VALUES(activityID)
Es funktioniert jedoch nur für doppelte PKs (nicht für beliebige Felder), also würde es in diesem Fall nur funktionieren, wenn userID
und eventID
die PK zusammenstellen und Sie nur die activityID
ändern möchten
Andernfalls könnten Sie die IF-ELSE-Route wählen, etwa so:
DECLARE mycount INT;
SET mycount = (SELECT COUNT(*) FROM eventcounter WHERE userID=1 AND eventID=1);
IF mycount > 0 THEN
UPDATE eventcounter SET activityID=1 WHERE userID=1 AND eventID=1;
ELSE
INSERT INTO eventcounter (userID, eventID, activityID) VALUES(1,1,1);
END IF;
Haftungsausschluss:völlig ungetesteter Code