Você deixou a coluna de dados fora do seu exemplo de inserção, mas você a mencionou várias vezes, então vou assumir que existe. Além disso, estou assumindo que é uma data real (não um carimbo de data/hora ou data/hora).
Se você adicionar um índice exclusivo em (usuário, ação, data), sua consulta funcionará.
Aqui está o DDL:
alter table useractions
add unique index unique_idx (user,action,date);
E seu DML (adicionando a coluna de data):
insert into useractions (user, action, times, date) values (2, 3, 1, current_date())
on duplicate key update times = times + 1;