To się nazywa Upsert
. Składnia MySQL jest dość dziwna, ale możesz to zrobić, na przykład:
INSERT INTO eventcounter (userID, eventID, activityID) VALUES(1,1,1)
ON DUPLICATE KEY UPDATE
activityID = VALUES(activityID)
Działa to jednak tylko dla zduplikowanych PK (nie dla dowolnego pola), więc w tym przypadku zadziała tylko wtedy, gdy userID
i eventID
skomponuj PK i chcesz zmienić tylko activityID
W przeciwnym razie możesz wybrać trasę IF-ELSE, coś takiego:
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;
Zastrzeżenie:całkowicie nieprzetestowany kod