Je hebt de gegevenskolom weggelaten uit je invoegvoorbeeld, maar je hebt het meerdere keren genoemd, dus ik ga ervan uit dat het bestaat. Ik ga er ook vanuit dat het een echte datum is (geen tijdstempel of datetime).
Als u een unieke index op (gebruiker,actie,datum) toevoegt, werkt uw zoekopdracht.
Hier is de DDL:
alter table useractions
add unique index unique_idx (user,action,date);
En uw DML (toevoegen van de datumkolom):
insert into useractions (user, action, times, date) values (2, 3, 1, current_date())
on duplicate key update times = times + 1;