C'est ce qu'on appelle un Upsert
. La syntaxe MySQL est assez bizarre, mais vous pouvez le faire, quelque chose comme :
INSERT INTO eventcounter (userID, eventID, activityID) VALUES(1,1,1)
ON DUPLICATE KEY UPDATE
activityID = VALUES(activityID)
Cela ne fonctionne que pour les PK en double (pas pour n'importe quel champ que vous aimez), donc dans ce cas, cela ne fonctionnerait que si userID
et eventID
composez le PK et vous voulez seulement changer le activityID
Sinon, vous pouvez suivre la route IF-ELSE, quelque chose comme :
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;
Avis de non-responsabilité :code totalement non testé