sql >> Database >  >> RDS >> Mysql

MySQL als rij bestaat update anders invoegen

Dat heet een Upsert . De MySQL-syntaxis is behoorlijk raar, maar je kunt het doen, zoiets als:

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

Het werkt echter alleen voor dubbele PK's (niet voor elk gewenst veld), dus in dit geval zou het alleen werken als userID en eventID stel de PK samen en u wilt alleen de activityID . wijzigen

Anders zou je de IF-ELSE route kunnen nemen, zoiets als:

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:totaal ongeteste code



  1. Wufoo's databaseschema - Hoe zou je het ontwerpen?

  2. Bekijk subsidies in MySQL

  3. PHP/MySQL - BEGIN... COMMIT werkt niet

  4. Hoe krijg ik toegang tot mysqli-verbinding in een andere klas op een andere pagina?