Visualizar como ficaria resultado do UPDATE

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.

Tem como fazer isso com o UPDATE?

Nunca ouvi isso nem pra delete nem para update.

Não entendi, você quer ver quantos serão afetados? É mais fácil você fazer um count.

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!

Para delete eu sei que tem como fazer. =)

[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.

Não sei se me fiz entender…

Isso mesmo!

Mas, como seria? Por exemplo…

select * from clientes where (update clientes set nome = ‘fulano’ where codigo = 2)

Como ficaria o where??

[quote=samara.cin]Isso mesmo!

Mas, como seria? Por exemplo…

select * from clientes where (update clientes set nome = ‘fulano’ where codigo = 2)

Como ficaria o where??[/quote]O que ele quer dizer é o mesmo que eu disse.
Você faria
select * from clientes where codigo = 2

Depois basta dentro do java alterar o valor do campo nome para fulano.

Ah não! =/

Então vou procurar e vou postar aqui…

O que o pmlm quis dizer foi isso:

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.

Entendeu?

Sim! Entendi o que ele quis dizer… mas não era isso que queria.

Bem… vou procurar saber e qualquer coisa volto a postar!

Obrigada pessoal!

Nós entendemos, é que não tem como um UPDATE que é um comando de DML se comportar como um comando de DQL.

[quote=samara.cin]Sim! Entendi o que ele quis dizer… mas não era isso que queria.

Bem… vou procurar saber e qualquer coisa volto a postar!

Obrigada pessoal![/quote]Beleza, só me mostra depois como você faz com delete? =D

Fiquei curioso. [=