Itulah yang disebut Upsert
. Sintaks MySQL cukup aneh, tetapi Anda dapat melakukannya, seperti:
INSERT INTO eventcounter (userID, eventID, activityID) VALUES(1,1,1)
ON DUPLICATE KEY UPDATE
activityID = VALUES(activityID)
Ini hanya berfungsi untuk PK duplikat (bukan untuk bidang apa pun yang Anda suka), jadi dalam hal ini hanya akan berfungsi jika userID
dan eventID
buat PK dan Anda hanya ingin mengubah activityID
Jika tidak, Anda dapat menggunakan rute IF-ELSE, seperti:
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;
Penafian:kode yang sama sekali belum teruji