<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">2015-05-18 6:34 GMT-03:00 SOCGER .- <span dir="ltr"><<a href="mailto:socger@hotmail.com" target="_blank">socger@hotmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>Ahora viene la pregunta del millón:</div><div>¿Una Transacion abierta obliga al servidor a esperar a la máquina B hasta que no termina la transacción de la máquina A?</div><div>O lo que es lo mismo, como la máquina A tiene una transacción que todavía no ha hecho un COMMIT, tiene prioridad sobre el resto de máquinas y las demás no hacen hada hasta que esta transacción está terminada?</div></blockquote></div><br><div class="gmail_default" style="font-family:tahoma,sans-serif">​Creo recordar que la lógica de TODOS los motores SQL es que una transacción en la que haces un UPDATE antes de grabar se fija si su copia del registro cambió, devolviendole el error al usuario (cada motor a su manera, supongo)<br><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">O sea, si A abre una transacción y está por enviar un UPDATE, y en el interin B abre una transacción, envía el UPDATE y hace el COMMIT, la transacción de A se marca como "dirty" y va a fallar a la hora del COMMIT.<br><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">​Una alternativa es usar SELECT (blablabla) FOR UPDATE, de esta manera los registros seleccionados se bloquean para el resto de las transacciones. <br>Otra: en MySQL se pueden definir distintos niveles de aislamiento para las transacciones, creo que el que necesitas se llama "SERIALIZABLE" o "REPEATABLE READ". El manual en linea tiene toda la data sobre eso: <a href="http://dev.mysql.com/doc/refman/5.0/en/set-transaction.html">http://dev.mysql.com/doc/refman/5.0/en/set-transaction.html</a>.<br><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Tene presente que en MySQL hay varios motores de almacenamiento, MyISAM no soporta transacciones, InnoDB si.<br><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Suerte con eso!<br></div><br><br clear="all"><br>-- <br><div class="gmail_signature"><div dir="ltr"><span style="font-size:small;font-family:tahoma,sans-serif"><div style="display:inline">​</div></span><font style="font-size:small" face="tahoma, sans-serif">Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program.<div style="display:inline">​ ​</div></font><i style="font-size:small;font-family:tahoma,sans-serif">Linus Torvalds</i><br></div></div>
</div></div>