Sin pretender ofender, necesitas repasar lo básico de SQL...
http://deletesql.com/
Un INSERT agrega un registro nuevo. Siempre.
Si ese insert no ingresa la totalidad de los campos eso es una decisión de diseño del desarrollador, y para ese caso los campos deben ser declarados como NOT NULL, a fin de evitar conflictos de consistencia.
Pero cuando el registro
ya existe, eso es siempre una
actualización, por lo que la sentencia es UPDATE.
Siempre.
Ahora bien, dos notas adicionales:
1) No existe la cláusula WHERE en los INSERT.
2) Para hacer un correcto uso de UPDATE, el WHERE debe identificar el registro a actualizar por su PK o de un modo que no genere errores. Eso ya es asunto que debes resolver tu.