Em 07-02-2011 11:46, Marcelo Cardoso de Souza escreveu: > Exemplo: Tenho um tabela com os campos id, campo1, campo2, campo3, > ultimoCampo e quando dou select * ele traz os campos nesta mesma ordem. > Eu preciso alterar a ordem dos campos na estrutura da tabela pois meu > sistema exige que o ultimoCampo sempre seja o ultimo, mas se eu inserir > um novo campo, o novo será o ultimo e isso não pode. > Na verdade o SQL não garante nem mesmo a ordem em que as colunas aparecem; isto é um detalhe de implementação. Aconselho a leitura do artigo "SELECT * is evil" [1] para reflexões sobre o uso do SELECT *. Basicamente alguns do problemas são:
(i) ineficiência: em uma tabela de 20 colunas você o utiliza mas precisa somente de 2 colunas. O problema será maior se algumas dessas colunas contiverem dados com alguns kB ou MB; (ii) versionamento: se uma coluna muda de nome e você o utiliza, a consulta não apresentará um erro (que seria de fácil depuração); (iii) ordem: se a ordem das colunas muda e você está utilizando alguma função baseada em posição (por exemplo, pg_fetch_result($res, 0, 3) -- quem é a coluna 3?), você pode estar recuperando o dado indesejado. Resumindo, se você quer ter uma aplicação sem imprevistos, *nunca* utilize SELECT *, ao invés disso, gaste um tempo a mais escrevendo os nomes das colunas desejadas. Marcelo, aconselho corrigir a sua aplicação para que não dependa da posição de colunas. [1] http://www.parseerror.com/sql/select*isevil.html -- Euler Taveira de Oliveira http://www.timbira.com/ _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
