Penso che dovresti considerare che le linee guida che hai letto si applicano a come una fattura dovrebbe essere visualizzata , e non come dovrebbe essere conservato nel database.
Quando un numero viene memorizzato come INT, è un numero puro. Se aggiungi degli zeri davanti e lo memorizzi di nuovo, è sempre lo stesso numero.
Puoi selezionare il campo NUMER come segue o creare una vista per quella tabella:
SELECT LPAD(NUMER,6,'0') AS NUMER
FROM ...
Oppure, invece di modificare i dati quando li selezioni dal database, considera di riempire il numero con zeri quando lo visualizzi e solo quando lo visualizzi.
Penso che la tua esigenza che i dati storici rimangano gli stessi sia un punto controverso. Anche per i dati storici, una fattura numerata 001203 è la stessa di una fattura numerata 1203.
Tuttavia, se devi assolutamente farlo nel modo in cui descrivi, la conversione in un campo VARCHAR potrebbe funzionare. I dati storici convertiti possono essere archiviati così come sono e qualsiasi nuova voce può essere riempita fino al numero richiesto di zeri. Ma non lo consiglio.