Creo que debería considerar que las pautas que leyó se aplican a cómo se debe mostrar una factura. , y no cómo debe ser almacenado en la base de datos.
Cuando un número se almacena como INT, es un número puro. Si agrega ceros al frente y lo almacena nuevamente, sigue siendo el mismo número.
Puede seleccionar el campo NÚMERO de la siguiente manera o crear una vista para esa tabla:
SELECT LPAD(NUMER,6,'0') AS NUMER
FROM ...
O, en lugar de cambiar los datos cuando los seleccione de la base de datos, considere rellenar el número con ceros cuando lo muestre, y solo cuando lo muestre.
Creo que su requisito de que los datos históricos permanezcan iguales es un punto discutible. Incluso para datos históricos, una factura con el número 001203 es lo mismo que una factura con el número 1203.
Sin embargo, si absolutamente debe hacerlo de la manera que describe, entonces la conversión a un campo VARCHAR puede funcionar. Los datos históricos convertidos se pueden almacenar tal cual, y cualquier entrada nueva se puede rellenar con el número requerido de ceros. Pero no lo recomiendo.