Myslím, že byste měli zvážit, že pokyny, které jste si přečetli, platí pro to, jak by měla být faktura zobrazována , a ne jak by měl být uložen v databázi.
Když je číslo uloženo jako INT, je to čisté číslo. Pokud přidáte nuly dopředu a znovu to uložíte, bude to stále stejné číslo.
Můžete vybrat pole NUMER následovně, nebo vytvořit pohled pro tuto tabulku:
SELECT LPAD(NUMER,6,'0') AS NUMER
FROM ...
Nebo raději než měnit data, když je vybíráte z databáze, zvažte doplnění čísla nulami, když je zobrazujete, a pouze když je zobrazujete.
Myslím, že váš požadavek, aby historická data zůstala stejná, je diskutabilní. I pro historická data platí, že faktura s číslem 001203 je stejná jako faktura s číslem 1203.
Pokud to však musíte udělat tak, jak popisujete, může převod na pole VARCHAR fungovat. Konvertovaná historická data lze uložit tak, jak jsou, a jakékoli nové položky lze doplnit na požadovaný počet nul. Ale to nedoporučuji.