Hai lasciato la colonna dei dati fuori dal tuo esempio di inserimento, ma l'hai menzionata più volte, quindi presumo che esista. Inoltre, presumo che sia una data effettiva (non un timestamp o datetime).
Se aggiungi un indice univoco su (utente, azione, data), la tua query funzionerà.
Ecco il DDL:
alter table useractions
add unique index unique_idx (user,action,date);
E il tuo DML (aggiungendo la colonna della data):
insert into useractions (user, action, times, date) values (2, 3, 1, current_date())
on duplicate key update times = times + 1;