Това се нарича Upsert
. Синтаксисът на MySQL е доста странен, но можете да го направите, нещо като:
INSERT INTO eventcounter (userID, eventID, activityID) VALUES(1,1,1)
ON DUPLICATE KEY UPDATE
activityID = VALUES(activityID)
Въпреки това работи само за дублиращи се PK (не за всяко поле, което харесвате), така че в този случай ще работи само ако userID
и eventID
съставете PK и искате да промените само activityID
В противен случай можете да отидете по пътя IF-ELSE, нещо като:
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;
Отказ от отговорност:напълно непроверен код