Saya pikir Anda harus mempertimbangkan bahwa pedoman yang Anda baca berlaku untuk bagaimana faktur harus ditampilkan , dan bukan bagaimana seharusnya disimpan dalam basis data.
Ketika sebuah angka disimpan sebagai INT, itu adalah angka murni. Jika Anda menambahkan nol di depan dan menyimpannya lagi, itu masih nomor yang sama.
Anda dapat memilih bidang NUMER sebagai berikut, atau membuat tampilan untuk tabel tersebut:
SELECT LPAD(NUMER,6,'0') AS NUMER
FROM ...
Atau, daripada mengubah data saat Anda memilihnya dari database, pertimbangkan untuk mengisi angka dengan nol saat Anda menampilkannya, dan hanya saat Anda menampilkannya.
Saya pikir persyaratan Anda untuk data historis tetap sama adalah poin yang bisa diperdebatkan. Bahkan untuk data historis, invoice bernomor 001203 sama dengan invoice bernomor 1203.
Namun, jika Anda benar-benar harus melakukannya seperti yang Anda gambarkan, maka mengonversi ke bidang VARCHAR mungkin berhasil. Data historis yang dikonversi dapat disimpan apa adanya, dan setiap entri baru dapat ditambahkan ke jumlah nol yang diperlukan. Tapi saya tidak menyarankan itu.