Podría agregar una tercera columna ModifiedDate
y usa eso:
insert into t(id, tag)
select id, tag
on duplicate key update ModifiedDate = now();
Esto garantizará que realmente se produzca una actualización y, a su vez, que LAST_INSERT_ID()
devuelve un valor.