Insert or update
Creamos una tabla con un varios campos.
Creamos un indice único sobre el campo email
Ahora insertamos el primer valor, lo importante es el email:
Ahora intentamos insertar un nuevo registro pero manteniendo el mismo email:
Evidentemente nos tiene que fallar, pues el indice único está funcionando
Por ultimo modificamos la consulta y le añadimos una condición para que nos actualice uno de los datos en el caso de intentar un insert con una clave unica, por lo que ya no nos dará el error:
insert into usuarios (nombre,email,clave,fechains) values ('Prueba duplicate','prueba@prueba.com','clavenueva',now()) on duplicate key update fechains=now()