Vous avez laissé la colonne de données hors de votre exemple d'insertion, mais vous l'avez mentionnée plusieurs fois, donc je suppose que cela existe. De plus, je suppose qu'il s'agit d'une date réelle (et non d'un horodatage ou d'une date/heure).
Si vous ajoutez un index unique sur (utilisateur, action, date), votre requête fonctionnera.
Voici le DDL :
alter table useractions
add unique index unique_idx (user,action,date);
Et votre DML (en ajoutant la colonne de date) :
insert into useractions (user, action, times, date) values (2, 3, 1, current_date())
on duplicate key update times = times + 1;