Problema con transacciones

Tengo una tabla
Código nombre
1 miguel
Abro transacción con componente de conexión ado
borro registro 1 con query (delete)
insert registro 1 con query (insert)
Se queda como bloqueado en esta parte y al rato dice la operación ha excedido el tiempo.
pd. Si le quito la tranacion funciona del carajo.

1 respuesta

Respuesta
1
Estamos suponiendo que el insert y el delete van por conexiones distintas con transacciones distintas verdad???
¿El campo del código es autonumérico? Ese es un posible problema en determinados tipos de BD. Que cuando abren una transacción y borran o insertan bloquean toda la tabla hasta el próximo commit, no debería ser así pero bueno... Si el código no es autonumérico probá de no insertar un registro con el mismo código es casi seguro que si mantiene el numero borrado en el logical log de la BD no permita ingresar en nuevo registro en la DB con un numero similar hasta que no le des commit al delete.
Por otro lado, fíjate que tipo de loqueo usa la tabla, las tablas pueden loquearse por página, por registro o simplemente la tabla entera, si es así deberías ponerla en loqueo por registro.
Si estás usando la misma transacción ya el problema es más grave, porque por lógica no deberían loquearse los registros para operaciones realizada por la misma transacción, si el problema persiste, ejecuta un commit entre el delete y el insert(ya se que no es lo que deseas hacer pero no veo otra salida).
Comentame más sobre que DB usas y que estructura tiene la tabla respecto de triggers, relaciones etc. que puedan estar influyendo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas