MySQL - ¿Se puede realizar una transaccion con Lock Table?

   
Vista:

¿Se puede realizar una transaccion con Lock Table?

Publicado por miguelhpm (5 intervenciones) el 15/09/2007 17:18:48
Hola a todos... mi duda es la siguiente...
quiero realizar una inserccion usando Transacciones pero quiero quiero darle mas seguridad en la insercion usando lock, no se si hay alguna forma de porder realizar esto en MySql, o por el contrario usar bien Transacciones o bien usar Lock table. aqui tengo un ejemplo de lo que estaba Probando

tengo un a taba 't_tabla' de pk: numReg

-----------------------------------------
| numReg | fechaReg |
-----------------------------------------
| 1 | '2007-09-10' |
| 2 | '2007-09-12' |
| 3 | '2007-09-13' |
-----------------------------------------

sql-> LOCK TABLE t_tabla WRITE;
sql-> START TRANSACTION;
sql-> INSERT INTO t_tabla VALUES (1,'2007-09-15');
sql-> INSERT INTO t_tabla VALUES (4,'2007-09-15');
sql-> COMMIT;
sql-> UNLOCK TABLES;

se Suporne que la transaccion evitaria el segundo registro ya que el primero estaria en error.
Pero no evita el segundo Registro. mi tabla luego queda asi:

-----------------------------------------
| numReg | fechaReg |
-----------------------------------------
| 1 | '2007-09-10' |
| 2 | '2007-09-12' |
| 3 | '2007-09-13' |
| 4 | '2007-09-15' |
-----------------------------------------

Saludos.........

PD: lo ehh probado de de la siguiente manera tambien :
sql-> START TRANSACTION;
sql-> LOCK TABLE t_tabla WRITE;
sql-> INSERT INTO t_tabla VALUES (1,'2007-09-15');
sql-> INSERT INTO t_tabla VALUES (4,'2007-09-15');
sql-> UNLOCK TABLES;
sql-> COMMIT;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:¿Se puede realizar una transaccion con Lock Tab

Publicado por Lorder (1 intervención) el 18/01/2008 14:05:34
Pues resulta que una transacción no debe evitar que se cometa un error y acabar ahí; la misión de una transacción es que tus cambios sean todos o ninguno, dentro de las instrucciones que tenga. Si tu primer insert falla, la transacción continúa y reailiza el segundo.
Lo que deberías hacer es comprobar si te ha funcionado el primer insert antes de hacer el segundo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar