Caros colegas, estou com o seguinte problema. Tinha uma versão 8.2 do Postgres e passei para 9.3( mas nem precisaria tanto, se tivesse ido para o 8.3 já estaria com este problema). Havia algumas integridades entre campos que em uma tabela o campo estava como int e em outra estava como char. O conteúdo é o mesmo(só numeros), mas por algum motivo foi feito assim. No 8.2 não dá problema algum, pois no momento de criar a integridade, ele faz algo que chamamos de conversão implícita.
Os responsáveis pelo Postgres simplesmente entenderam que da versão 8.3 em diante essa conversão implícita não era mais necessária e então quando vamos aplicar a integridade aparece o erro:
Colunas chave "codigo" e "codigo" são tipos incompatíveis: character e integer.
Isso se dá também quando fazer fazer um join com os campos;
Quando vamos fazer um where e colocamos o numero fora da aspas:
select * from teste where codigo = 1
etc...
Sendo assim, um sistema todo pronto que em vários partes da programação tem comandos com where, join, e etc. não funciona mais. Estou chateada e gostaria de saber se existe alguma solução que não seja entrar no código do programa e sair colocando cast em todos os lugares que este campo é referenciado. Também não posso mudar o tipo do campo no banco de dados.
Sei que está questão da conversão implícita é uma função que é criada no banco, mas não sei como fazer.
Pergunta
LaraC
Caros colegas, estou com o seguinte problema. Tinha uma versão 8.2 do Postgres e passei para 9.3( mas nem precisaria tanto, se tivesse ido para o 8.3 já estaria com este problema). Havia algumas integridades entre campos que em uma tabela o campo estava como int e em outra estava como char. O conteúdo é o mesmo(só numeros), mas por algum motivo foi feito assim. No 8.2 não dá problema algum, pois no momento de criar a integridade, ele faz algo que chamamos de conversão implícita.
Os responsáveis pelo Postgres simplesmente entenderam que da versão 8.3 em diante essa conversão implícita não era mais necessária e então quando vamos aplicar a integridade aparece o erro:
Colunas chave "codigo" e "codigo" são tipos incompatíveis: character e integer.
Isso se dá também quando fazer fazer um join com os campos;
Quando vamos fazer um where e colocamos o numero fora da aspas:
select * from teste where codigo = 1
etc...
Sendo assim, um sistema todo pronto que em vários partes da programação tem comandos com where, join, e etc. não funciona mais. Estou chateada e gostaria de saber se existe alguma solução que não seja entrar no código do programa e sair colocando cast em todos os lugares que este campo é referenciado. Também não posso mudar o tipo do campo no banco de dados.
Sei que está questão da conversão implícita é uma função que é criada no banco, mas não sei como fazer.
Grata!!!!
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.