Ver Mensaje Individual
  #13 (permalink)  
Antiguo 20/03/2011, 04:49
Avatar de Gakex
Gakex
 
Fecha de Ingreso: enero-2009
Mensajes: 137
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: bloquear tabla y registros

hay eso es algo muy fácil y ademas se lo dejas directamente al SGBD, eso que quieres hacer se llama realizar una "Transacción" y anteriormente hable de eso aquí en este foro que por cierto es algo que acabo de aprender y al parecer no hay mucha información de como hacerlo, por aquí, porque esto que te voy a contar lo tuve que experimentar.

Basicamente quieres evitar que un usuario modifique o lea un dato que estas a punto de modificar, por la rason de que la base de datos quedaria inconsistente, es decir, mmm... digamos que no cuadraria.

en el ejemplo de la compra de un boleto de autobus debemos primeramente ver cuales asientos estan disponibles y mostrarselos al cliente, el cliente decidira cual es el que mas le agrada, pero digamos que hay 5 personas en el mismo momento comprando boleto para ese viaje y dos de ellos quieren el mismo asiento, que pasaria si se vende dos veces el mismo lugar?
inconsistencia es la respuesta.
por ese motivo es necesario bloquear, no las tablas pero si, los registros y si el cliente A se decide por otro asiento pues simplemente se cansela la transaccion y regresa a su estado inicial asi el cliente B, C ó D podra comprar el boleto ocupando el asiento en disputa.

otro ejemplo donde tambien se deben hacer transacciones es para prevenir inconsistencias por falla electrica:
si imaginen que estan metiendo un nuevo registro en una tabla y ademas actualizan dos tablas mas y justamente cuando le estan dando click para guardar el registro en una milesima de fraccion de segundo se va la luz y se apaga el disco duro y la computadora, si solo se ejecuto la mitad del proceso, las dos tablas no se actualizaron y la base de datos quedo inconsistente, se puede arreglar a mano pero si ademas es multi usuarios y muchos la usan pta nunca terminas tu solo.
esto se pudo haber evitado si hubieras usado transacciones, ahora imagina que se va la luz que alimenta al servidor de un banco, que es imposible pero....

Bueno, como se hace esto

usando los metodos:
BeginTrans antes de ejecutar las cadenas sql y terminas con CommitTrans

y haciendo referencia al primer ejemplo digamos que el usuario A se retracta de compra el boleto, entonces pasamos un RollbackTrans.

espero haber sido claro cya.