Vynechali jste datový sloupec ve svém příkladu vložení, ale několikrát jste ho zmínili, takže budu předpokládat, že existuje. Také předpokládám, že se jedná o skutečné datum (nikoli časové razítko nebo datum a čas).
Pokud přidáte jedinečný index na (uživatel, akce, datum), bude váš dotaz fungovat.
Zde je DDL:
alter table useractions
add unique index unique_idx (user,action,date);
A váš DML (přidání sloupce data):
insert into useractions (user, action, times, date) values (2, 3, 1, current_date())
on duplicate key update times = times + 1;