Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho um formulário com muitos campos, e quando preciso atualizar por exemplos apenas um campo, e feito um update em todos os campos da tabela substituindo todos os valores.
Gostaria de saber como fazer para fazer o UPDATE e atualizar somente os campos que foram modificados.
O banco de dados utlizado é PostgreSQL.
Desde já agradeço a atenção !
beleza cara, so que o numero de campos da tabela e bem elevado. e existem muitos registros, as vezes é necessario alterar por exemplo so um campo nome, e ae o sistema atualiza todos os campos sem necessidade.
Mesmo assim obrigado !
>
o numero de campos da tabela e bem elevado.
aparentemente, então o teu problema é que a modelagem sql parece estar incorreta.
Conhece as Formas Normais ?
Pelo menos está parecendo que você está procurando um paliativo, para um outro problema que surgiu de um mal planejamento.
leia:
use o Responder Azul /applications/core/interface/imageproxy/imageproxy.php?img=http://img222.imageshack.us/img222/8498/respondery.png&key=db0a5d713bd1099ba19595f08a80f5881ed1a276406432195f83536896c761d5" alt="respondery.png" />ou a 'Resposta Rápida'.
Tenho quase certeza de que o custo de performance a nível de banco é exatamente o mesmo para alterar uma coluna de uma linha ou todas as colunas dessa mesma linha.
Flávio, dependendo da versao do MySQL nao precisa se preocupar.
O MySQL identifica os dados antes de fazer update e altera apenas os que estiverem diferentes
por exemplo, você tem um formulário assim
aa [ 50 ]
bb [ 51 ]
cc [ 52 ]
o usario modifica e envia
aa [ 10 ]
bb [ 51 ]
cc [ 52 ]
o usuario modificou apenas "aa"
no server side, o mysql vai verificar cada um e alterar apenas o que estiver diferente do valor já existente no banco
nesse caso vai alterar apenas "aa"..
para comprovar isso, logo após o update, verifique usando mysql_affected_rows();
claro que isso custa processos de qualquer forma, mas não é tão relevante..
Outra técnica que você pode utilizar são recursos client-side ( javascript ) que identifique e envie somente dados que foram alterados.
É mais trabalhoso de implemntar e manter, mas se questão de perfomance for tão importante assim, "go-ahead"
Confome comentaram acima, verifique a estrutura da tabela.
Remova índices e chaves desnecessárias.
Muito obrigado pela ajuda hinom ! vlw mesmo cara !
cara.. eu acho isso desnecessário..
UPDATE, INSERT, DELETE são sempre rápidos.. oque você precisa se preocupar são os SELECTs.
Veja, não me ocorreu nada 'prático', e nem conheço outra forma de fazer oque você perguntou.
A única coisa que me veio a cabeça, seria formar o UPDATE em tempo de execução.
Ai você teria que:
Assim, não sei se existe outra forma, esta foi a única que me ocorreu agora.
Vejamos se mais alguém tem alguma idéia.