Đó là cái được gọi là Upsert
. Cú pháp MySQL khá lạ, nhưng bạn có thể làm được điều đó, chẳng hạn như:
INSERT INTO eventcounter (userID, eventID, activityID) VALUES(1,1,1)
ON DUPLICATE KEY UPDATE
activityID = VALUES(activityID)
Mặc dù vậy, nó chỉ hoạt động cho các PK trùng lặp (không phải cho bất kỳ trường nào bạn muốn), vì vậy trong trường hợp này, nó sẽ chỉ hoạt động nếu userID
và eventID
soạn PK và bạn chỉ muốn thay đổi activityID
Nếu không, bạn có thể đi theo tuyến IF-ELSE, giống như:
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;
Tuyên bố từ chối trách nhiệm:mã hoàn toàn chưa được kiểm tra