Peço desculpas, mas não consegui organizar o e-mail direito.

> Em 24 de jan de 2017, às 19:07, Leandro Guimaraens Faria Corcete DUTRA 
> <[email protected]> escreveu:
> 
> Le mar. 24 janv. 2017 à 18:00, Márcio A. Sepp <[email protected]> 
> a écrit :
>>> > O problema disso é que se eu criar o campo como sendo integer, lá
>>> > pelas tantas corro o risco de dar violação de PK.
>>> Boiei.  Como assim?
>> '0012345'::integer = 12345
> 
> O que voce quer dizer e' que armazena sequencias de caracteres contendo 
> apenas digitos como inteiros?  Se tua regra de negocio diferencia zeros 'a 
> esquerda, pode ser problema.  Mas, no caso, creio que o correto seria dizer 
> que e' caracter com uma restricao de integridade de conferencia, talvez com 
> uma expressao regular [0-9]* ou algo assim (estou enferrujado com as 
> expressoes regulares, e muito mais coisas alias).  Se e' que entendi direito.
> 
> 
>>> > As soluções possíveis seriam criar o campo como varchar(7) ou colocar
>>> > um segundo campo na chave para identificar a informação.
>>> Acho que veio algo truncado.  Nao me fez sentido.
>> Ficou estranho, mas vc já respondeu acima. Vou dividir a informação em 02 
>> campos integer menores (smallint numa dessas).
>> Obrigado.
>> Dúvida resolvida.
> 
> Mas esclareca-nos, por favor.
> 

O caso eh que tem um cadastro de itens onde o código do item pode vir com 5 ou 
com 7 dígitos. Quando o item eh de um determinado importador ele tem 5 dígitos 
e qdo eh do mercado interno ele tem 7. 
Exemplo d código d produto com 7 dígitos: 0012345.
Exemplo d código d produto com 5 dígitos: 01234

O que eh melhor (ou mais correto a fazer neste caso):
1) crio um campo para identificar a origem (importador "xxx" ou mercado 
interno) e junto esse campo na chave. A chave seria composta pelo campo origem 
e o campo código do item (neste caso integer);
2) crio o campo código como sendo varchar(7);


_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a