Tomu se říká Upsert
. Syntaxe MySQL je docela divná, ale můžete to udělat, něco jako:
INSERT INTO eventcounter (userID, eventID, activityID) VALUES(1,1,1)
ON DUPLICATE KEY UPDATE
activityID = VALUES(activityID)
Funguje to však pouze pro duplicitní PK (ne pro jakékoli pole, které se vám líbí), takže v tomto případě by to fungovalo pouze v případě, že userID
a eventID
vytvořte PK a chcete změnit pouze activityID
Jinak byste mohli jít cestou IF-ELSE, něco jako:
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;
Zřeknutí se odpovědnosti:zcela netestovaný kód