Dat heet een Upsert
. De MySQL-syntaxis is behoorlijk raar, maar je kunt het doen, zoiets als:
INSERT INTO eventcounter (userID, eventID, activityID) VALUES(1,1,1)
ON DUPLICATE KEY UPDATE
activityID = VALUES(activityID)
Het werkt echter alleen voor dubbele PK's (niet voor elk gewenst veld), dus in dit geval zou het alleen werken als userID
en eventID
stel de PK samen en u wilt alleen de activityID
. wijzigen
Anders zou je de IF-ELSE route kunnen nemen, zoiets als:
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;
Disclaimer:totaal ongeteste code