Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL se la riga esiste aggiorna altrimenti inserisci

Questo è ciò che viene chiamato Upsert . La sintassi di MySQL è piuttosto strana, ma puoi farlo, qualcosa del tipo:

INSERT INTO eventcounter (userID, eventID, activityID) VALUES(1,1,1)
ON DUPLICATE KEY UPDATE
  activityID = VALUES(activityID)

Funziona solo per PK duplicati (non per qualsiasi campo che ti piace), quindi in questo caso funzionerebbe solo se userID e eventID componi il PK e vuoi solo cambiare il activityID

Altrimenti, potresti seguire il percorso IF-ELSE, qualcosa del tipo:

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;

Disclaimer:codice totalmente non testato