Pessoal, gostaria de fazer um update em um conjunto de dados.
Mas, antes, gostaria de visualizar como ficaria este resultado.
Uma vez, um amigo me falou que tem como fazer isso com a clausula DELETE. A gente, antes da exclusão, consegue visualizar quais registros serão excluídos da base.
Não. Eu quero ver (antes de dar o commit) quais dados serão afetados. Ou melhor, quais registros serão atualizados ou excluídos, antes da alteração realmente acontecer.
[quote=samara.cin]Não. Eu quero ver (antes de dar o commit) quais dados serão afetados. Ou melhor, quais registros serão atualizados ou excluídos, antes da alteração realmente acontecer. [/quote]Os dados que serão alterados, serão os dados que estão na cláusula where. Se tiver where id=1 esse cara será alterado.
Não seria mais fácil você exibir o objeto que será alterado antes de enviá-lo para o update?
Sim. Eu sei disso… mas gostaria de saber se existe a possibilidade de visualizar quais possíveis registros eu vou alterar, dando um select (no caso, o update ficaria dentro deste select).
É como se eu estivesse executando o update, mas antes visualizando quais registros seriam alterados.
Bem… se eu encontrar a resposta disso eu posto aqui!
[quote=samara.cin]Sim. Eu sei disso… mas gostaria de saber se existe a possibilidade de visualizar quais possíveis registros eu vou alterar, dando um select (no caso, o update ficaria dentro deste select).
É como se eu estivesse executando o update, mas antes visualizando quais registros seriam alterados.
Bem… se eu encontrar a resposta disso eu posto aqui!
Para delete eu sei que tem como fazer. =)[/quote]uia, me ensina? =]
Nunca vi isso não. [=
Fazes um select com o where igual ao que colocas no update. Mostras ao utilizador e ele confirma (e fazes o update) ou cancela (não fazes nada).
Tens o problema de que não há garantias de que não há alteração de dados entre o select e o update e a lista de que mostras ao utilizador pode não ser a que efectivamente vai ser alterada.
A solução para isso é, em vez de fazer um update, fazes n, pelos IDs que obtiveste no select.
vamos supor que você quer alterar todos os produtos que estão com status 1 para status 2.
Como você faz para saber quais são esse produtos ?
“SELECT * FROM produtos WHERE status = 1”
Certo? Listou todos os produtos com status 1, esses produtos são os que (teoricamente) serão alterados. Agora como ficaria o update?
“UPDATE produtos SET status = 2 WHERE status = 1”
O que ele quis dizer é que a clausula where será igual. Mas nada garante que entre a execução das duas algum registro não tenha sido alterado.
Se logo após que você fez o select alguém incluiu um novo produto com status 1, ele também será afetado no update.