Du lämnade datakolumnen utanför ditt infogningsexempel, men du nämnde det flera gånger så jag antar att det finns. Jag antar också att det är ett verkligt datum (inte en tidsstämpel eller datumtid).
Om du lägger till ett unikt index på (användare, åtgärd, datum) kommer din fråga att fungera.
Här är DDL:
alter table useractions
add unique index unique_idx (user,action,date);
Och din DML (lägger till datumkolumnen):
insert into useractions (user, action, times, date) values (2, 3, 1, current_date())
on duplicate key update times = times + 1;