Page 1 of 1

¿como bloqueo registros y tablas en MYSQL?

PostPosted: Sat Sep 10, 2016 4:06 pm
by JoseAlvarez
Saludos a todos.
Acabo de terminar mi primera aplicacion con el uso de MYSQL. Siempre habia trabajado con DBFs.
Reconozco que no me documenté bien antes de comenzar, lo cierto es que ya con la aplicación terminada, me doy cuenta que no funcionará en ambientes multiusuarios porque asumí, basado en información errónea que no confirme, que el mysql se encargaba de bloquear tablas y registros de forma automática y transparente para el programador. Enorme equivocación según aprendo ahora.
Dos preguntas: Podría alguien explicarme aunque sea en forma resumida el procedimiento para bloquear tanto tablas como registros en MYSQL? es decir, los equivalentes (si se puede decir) del net_use() y rec_lock() que se usan en DBFs? y en segundo lugar, de que manera puedo hacer una instalacion automatica de MYSQL ? me explico mejor: Para mis aplicaciones con DBF solo hacia mi instalador con INNOSETUP o cualquier otro similar y desde codigo creaba las carpetas y dbf necesarias por lo que la instalacion se podía hacer en cualquier parte por cualquier persona. En mysql al parecer la instalacion del motor debe ser obligatoriamente (hasta donde se) en forma presencial, es decir, hay que ir hasta la maquina del cliente para instalar el MYSQL y luego la aplicacion. Esto me parece totalmente ilógico e inoperante porque entonces, ¿como vender un producto que use mysql a otro pais por ejemplo, si tengo que ir hasta la computadora del cliente a instalarle el MYSQL? no creo que esto sea asi, debe haber alguna manera de que todo sea automatico. ¿Podría alguien arrojarme un poco de luz al respecto? Pido disculpas de antemano por la ignorancia tan grande sobre el tema de mysql.

Agradecido de antemano con cualquier ayuda que gentilmente puedan extenderme sobre los temas expuestos.

Re: ¿como bloqueo registros y tablas en MYSQL?

PostPosted: Sat Sep 10, 2016 9:27 pm
by joseluisysturiz
Saludos colega, solo hay que BUSCAR en Mr.Google y leer un poco, tus inquietudes ya han pasado por las manos de otros y soluciones han creado, saludos... :shock:

Bloquear registros:

http://www.forosdelweb.com/f18/como-blo ... ql-280324/

http://www.clubdelphi.com/foros/archive ... 45009.html


MySql desatendido:

http://www.-.com/forum/viewtopic.php?t=8548

http://www.lawebdelprogramador.com/foro ... ndida.html

http://blog.hardmax.com.pe/2011/10/26/i ... aquetadas/

Re: ¿como bloqueo registros y tablas en MYSQL?

PostPosted: Sat Sep 10, 2016 10:19 pm
by cnavarro

Re: ¿como bloqueo registros y tablas en MYSQL?

PostPosted: Sat Sep 10, 2016 10:52 pm
by carlos vargas
Haber vamos por parte como dijo jack.

en mysql se pueden utilizar diferentes engines para manejo de tablas, las dos mas comunes son myisam (la cual es usada mayormente por tablas que serán usadas mas que todo para consulta, dado que un select en ese tipo de tablas vuela, lo parte negativa es que no permite de forma natural el bloqueo de registro, y requiere sus mañas para el bloqueo a tablas.), por otro lado el engine innodb es usado cuando es necesario manejar integridad en las tablas, este motor permite realizar transacciones que es la forma de proteger la grabación y seleción de la información, los que trabajamos creando aplicaciones de gestion usamos innodb.
por ejemplo en delphi es comum esto:

Code: Select all  Expand view

try
 oServer:BeginTransaction()
 oServer:Insert(....)
 oServer:Update(....)
 oServer:delete(...)
 oServer:Commit()
catch oError
 oServer:Rollback()
 MsgInfo( oServer:ErrorTxt() )
end
 

dado el codigo anterior, si ocurriera un error en el update, la insercion es anulada con la instruccion oServer:Rollback(), pero si no ocurriera un error, cuado se llega a oServer:Commit(), es cuando realmente la informacion es grabada correctamente en la tabla. todo esto debe ocurrir en fracciones de segundo, dado que durante el tiempo que toma entre el BeginTransaction a el commit o rollback, las filas de datos están protegidas, y no pueden ser modificadas por otro usuarios, incluso si realizáramos un select al cual le agregamos la instrucción update, las filas que nos regresa ese select estarían protegidas igualmente.
en el codigo anterior nosotros manejamos cuando se usan transacciones, en caso de no usar begintransaction, commit y rollback, aun asi cada operacion insert, update, delete esta protegida por transaccion, pero solo protegiendo la info que se modifique en cada instruccion, esto es lo que llamamos autocommit, pero no todo el bloque de las operaciones.

https://firebird21.wordpress.com/2013/06/22/transacciones-optimistas-y-transacciones-pesimistas/
este es un sitio que estoy seguro te ayudara, se que es sobre el motor firebirdsql pero todo es aplicable a mysql, ademas toda la información del sitio es algo de que todos deberiamos manejar.

Re: ¿como bloqueo registros y tablas en MYSQL?

PostPosted: Sat Sep 10, 2016 11:09 pm
by joseluisysturiz
JoseAlvarez wrote:Saludos a todos.
Acabo de terminar mi primera aplicacion con el uso de MYSQL. Siempre habia trabajado con DBFs.
Reconozco que no me documenté bien antes de comenzar, lo cierto es que ya con la aplicación terminada, me doy cuenta que no funcionará en ambientes multiusuarios porque asumí, basado en información errónea que no confirme, que el mysql se encargaba de bloquear tablas y registros de forma automática y transparente para el programador. Enorme equivocación según aprendo ahora.
Dos preguntas: Podría alguien explicarme aunque sea en forma resumida el procedimiento para bloquear tanto tablas como registros en MYSQL? es decir, los equivalentes (si se puede decir) del net_use() y rec_lock() que se usan en DBFs? y en segundo lugar, de que manera puedo hacer una instalacion automatica de MYSQL ? me explico mejor: Para mis aplicaciones con DBF solo hacia mi instalador con INNOSETUP o cualquier otro similar y desde codigo creaba las carpetas y dbf necesarias por lo que la instalacion se podía hacer en cualquier parte por cualquier persona. En mysql al parecer la instalacion del motor debe ser obligatoriamente (hasta donde se) en forma presencial, es decir, hay que ir hasta la maquina del cliente para instalar el MYSQL y luego la aplicacion. Esto me parece totalmente ilógico e inoperante porque entonces, ¿como vender un producto que use mysql a otro pais por ejemplo, si tengo que ir hasta la computadora del cliente a instalarle el MYSQL? no creo que esto sea asi, debe haber alguna manera de que todo sea automatico. ¿Podría alguien arrojarme un poco de luz al respecto? Pido disculpas de antemano por la ignorancia tan grande sobre el tema de mysql.

Agradecido de antemano con cualquier ayuda que gentilmente puedan extenderme sobre los temas expuestos.


Bueno man, alli tiene como decimos en mi pais....jabon pa que lave...saludos... :shock:

Re: ¿como bloqueo registros y tablas en MYSQL?

PostPosted: Sun Sep 11, 2016 2:54 pm
by JoseAlvarez
Ooookk. ! Una vez más, gracias a todos por su desinteresada ayuda. Como dice jose luis, a lavar ! :D