Yo más bien estaba pensando en usar padleft cuando haya que mostrar al usuario la clave primaria, pero que internamente use el campo entero.
Por ejemplo, si hacemos una vista (view) para la tabla cliente, allí usamos
Código SQL
[-]
select lpad( cast(idcliente as char(20), '0',20), direccion, nombre from clientes
De esta forma tienes la ventaja de usar un entero para las búsquedas, triggers, etc. de la base de datos, pero muestras al usuario el número formateado.
Saludos