Cita: A ver si lo entiendo, ¿al especificar una fecha como llave única no me debería de sobrescribir automáticamente si inserto un dato igual?
No. El índice UNIQUE dispara un error al intentar realizar un INSERT con una clave ya existente. Por definición, ese es el comportamiento esperado.
Cita: Si no fuera así ya sé que tengo que utilizar la orden update pero ¿cómo hago para saber si la fecha introducida en el formulario ya existe en la base de datos?
¿Cómo?
Haciendo lo que hacemos todos: Realizando una consulta de verificación previa... No hay otro camino. Todas las aplicaciones que conoces funcionan así.
Las restricciones de bases de datos están diseñada precisamente para ayudarte a no meter la pata, y no para que las cosas te resulten fáciles.
Cita: La otra opción que veo es crear un nuevo formulario que en vez de insertar modifique los datos que haya almacenados pero quiero evitar esto porque son muchos, por eso prefiero que me sobrescriba al introducir un dato igual.
En este caso te sugiero diseñar un sistema de actualización masiva, que implicaría recolectar primero todos los cambios a realizar, y luego procesarlos. Caso contrario sólo te queda hacerlo uno a uno.
En sistemas de manejo masivo de datos, es normal preparar precisamente funcionalidades para realizar actualizaciones masivas. Se diseñan para ese tipo de contingencias. Pero si el cambio debe ser rápido, no son funcionales.