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
