Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Claudio Neto

Usando START TRANSACTION

Recommended Posts

Estou tentando criar um sistema para efetuar algumas atualizações no banco de dados.

Então criei uma tela onde preencho todas as atualizações necessárias, confirmo e efetuo as atualizações.

 

na tela seguinte exibo como era antes e como ficou após as atualizações para que confirmar se ficou conforme esperado, e minha idéia é deixar um botão para confirmar e cancelar, usando COMMIT E ROLLBACK.

 

Porém não funciona, quando clico em cancelar para efetuar o ROLLBACK, mesmo assim as atualizações são efetuadas.

 

Meu código está assim:

 

CorrigeCidades.asp

<%
Dim rs_velho, rs_novo
if request.form("ddd_") <> "" then
	Call AbreConexao
	sql = "select uf, cidade, count(*) total from DDD"&request.form("ddd_")&"_copy group by uf, cidade order by cidade"
	set rs_velho = cn.execute(sql)
	response.write "A relação DDD"&request.form("ddd_")& " está assim: <br />"
	response.write "<table border='1'>"
	response.write "<tr><td>Item</td><td>UF</td><td>Cidade</td><td>Quantidade</td></tr>"
	do until rs_velho.eof
		response.write "<tr><td>"& rs_velho.absoluteposition &"</td><td>"&rs_velho("uf") & "</td><td>"&rs_velho("cidade")&"</td><td>"&rs_velho("total")&"</td></tr>"
		rs_velho.movenext
	loop
	response.write "</table>"
	
	cn.execute ("START TRANSACTION")
	
	sql = "select cidade from listaDDD where ddd = '"&request.form("ddd_")&"' group by cidade order by cidade"
	set rs = cn.execute(sql)
	do until rs.eof
		sql = "UPDATE DDD"& request.form("ddd_") &"_copy SET CEP = '"& replace(request.form(rs("cidade")&"ini"),"-","") &"' WHERE CIDADE = '"& rs("cidade") &"' AND cep NOT BETWEEN '"& replace(request.form(rs("cidade")&"ini"),"-","") &"' AND '"& replace(request.form(rs("cidade")&"fim"),"-","") &"'"
		'response.write request.form(rs("cidade")&"ini") & " - " & request.form(rs("cidade")&"fim") & "<br />"
		'response.write sql
		'response.write "<br />"
		cn.execute (sql)
		rs.movenext
	loop
	rs.movefirst
	do until rs.eof
		sql = "UPDATE DDD"& request.form("ddd_") &"_copy SET CIDADE = '"& rs("cidade") &"' WHERE CEP between '"& replace(request.form(rs("cidade")&"ini"),"-","") &"' and '"& replace(request.form(rs("cidade")&"fim"),"-","") &"'"
		'response.write request.form(rs("cidade")&"ini") & " - " & request.form(rs("cidade")&"fim") & "<br />"
		'response.write sql
		'response.write "<br />"
		cn.execute (sql)
		rs.movenext
	loop
	
	sql = "select uf, cidade, count(*) total from DDD"&request.form("ddd_")&"_copy group by uf, cidade order by cidade"
	set rs_novo = cn.execute(sql)
	response.write "A relação DDD"&request.form("ddd_")& " ficará assim: <br />"
	response.write "<table border='1'>"
	response.write "<tr><td>Item</td><td>UF</td><td>Cidade</td><td>Quantidade</td></tr>"
	do until rs_novo.eof
		response.write "<tr><td>"& rs_novo.absoluteposition &"</td><td>"&rs_novo("uf") & "</td><td>"&rs_novo("cidade")&"</td><td>"&rs_novo("total")&"</td></tr>"
		rs_novo.movenext
	loop
	response.write "</table>"
	
	response.write "Deseja confirmar?"
	response.write "<form name='confirma' action='CorrigeCidades.asp' method='post'>"
		response.write "<input type='button' name='confirma' value='Sim' onclick='document.confirma.submit()' />"
		response.write "<input type='button' name='confirma' value='Não' onclick='document.confirma.submit()' />"
	response.write "</form>"
	Call FechaConexao
end if
%>

<%
if request.form("confirma") = "Sim" then
	call AbreConexao
	cn.execute ("COMMIT")
	call FechaConexao
elseif request.form("confirma") = "Não" then
	call AbreConexao
	cn.execute ("ROLLBACK")
	call FechaConexao
end if
%>

Porque não funciona? Para funcionar eu precisava executar o Rollback com a mesma conexão?

 

Obrigado desde já.

 

Meu problema não é no ASP, e sim no MySQL mesmo.

 

Tentei executar alguns testes direto no MySQL Front, mas o rollback nunca funciona.

Toda operação que faço ele executa, sem esperar o COMMIT.

 

Se alguém puder, por favor, transferir para MySQL agradeço, acho que lá se encaixa mais meu problema.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.