Cita: Porque necesito que sea tipo varchar para usarlo en una función. A parte, supongo que tendría que cambiarle la máscara igualmente y volvería a necesitar el trigger.
Estás confundiendo lo que debes
guardar en la base, con lo que debes
recuperar por consulta.
Son cosas diferentes.
Puedes perfectamente guardar en forma correcta una fecha como DATE, con lo que te ahorrarás muchñisimas complicaciones a la hora de hacer la consulta, y luego simplemente manejar la salida como cadena de texto con el formato que quieras, sin por eso tener que poner basura en la base.
Y literalmente estoy diciendo basura. Un DATE guardado como VARCHAR es un error de los graves por muchas raoznes, incluyendo eficiencia, optimizacion de consultas, capacidad de almacenamiento y manejo de índices.
Por otro, para hacer un TRIGGER, debes recordar que
no puedes invocar una sentencia INSERT/UPDATE/DELETE sobre la misma tabla donde corre el trigger . Sólo puedes operar con el registro entrante, per no con la tabla.