Det er det, der kaldes en Upsert
. MySQL-syntaksen er ret underlig, men du kan gøre det, sådan noget som:
INSERT INTO eventcounter (userID, eventID, activityID) VALUES(1,1,1)
ON DUPLICATE KEY UPDATE
activityID = VALUES(activityID)
Det virker dog kun for duplikerede PK'er (ikke for ethvert felt, du kan lide), så i dette tilfælde ville det kun fungere, hvis userID
og eventID
komponer PK'en, og du vil kun ændre activityID
Ellers kunne du gå IF-ELSE-ruten, noget som:
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;
Ansvarsfraskrivelse:Fuldstændig utestet kode