Смотрите табличку и выбирайте
https://www.postgresql.org/docs/9.1/datatype-numer...
Если я правильно догадываюсь что значит "8 цифр" и "8-12 цифр", то подойдет integer и bigint, соответственно.
И почему так, в двух словах.
потому что, если применить тип поменьше - значения не уместятся, а если взять побольше - записи будут бессмысленно занимать лишнее место.