PDA

Ver la Versión Completa : deadlock update


BuenaOnda
25-10-2007, 04:28:35
Hola amigos del foro :

Alguien me podría decir como evitar que me aperezca este mensaje
"deadlock update conflicts with concurrent update ", lo que pasa es que tengo mi base de datos en Red y me esta apareciendo este mensaje...bueno, muchas gracias por su ayuda..:)

afxe
25-10-2007, 11:05:00
Los deadlock (anillos de la muerte) se producen normalmente (posiblemente haya más motivos, no soy un guru) cuando el trigger de una tabla A repercute sobre una tabla B, cuyos trigger directa o indirectamente vuelven a modificar la tabla A, es decir, haciendo referencia a ésta o modificando otras tablas que hagan modificaciones sobre la tabla A. Cuando la base de datos tiene una tabla en modo Update (haciendo los triggers before y after update correspondiente) y le llega una petición de modificación de esa tabla en la misma transacción obtienes un bonito mensaje de "deadlock". También se puede producir por triggers DELETE e INSERT.

Cuando son por recursión son muy difíciles de detectar, así que suerte.

Saludos.

BuenaOnda
26-10-2007, 02:41:41
Gracias por tu ayuda.. lo que pasa es que esto sucede cuando se quiere actualizar un registro que no existe o se quiere ingresar un registro que ya existe( osea, me refiero a un registro unico ), entonces la idea es saber si existe alguna propiedad del Componente IBDataBase, que omita este mensaje o que no haga nada en el caso de q' ocurra esto.

BuenaOnda
26-10-2007, 04:24:22
Amigos..en que componente puedo indicar que no quiero que me aparezca dicho mensaje, o que no realice ninguna acción?..en el componente IBTransaction o en el Componente IBDataBase..lo que para es que no quiero capturar la excepcion por que tengo muchos formularios..gracias de ante mano.:D

BuenaOnda
01-11-2007, 03:28:05
aun con el problemita...:o. Cualquier aporte se los agradecera muchos..:)

jhonny
01-11-2007, 14:19:16
Bueno, esto debe ser un problema de concurrencia, quizá alguien esta tratando de modificar un registro de una tabla, cuando dicho registro esta bloqueado por otra trasacción... yo creo que deberias plantearte una cuestión como la siguiente:

¿Realmente necesito que las dos personas modifiquen el mismo registro o es un error de diseño?

Si necesitas que ambos modifiquen el mismo registro, pues ten en cuenta que el error te esta ayudando a idenficar el momento en que esto no es posible y podrias capturarlo para mostrar un mensaje mas diciente al usuario final.

Si no es asi y definitivamente esto no deberia estar sucediendo, busca la manera de que estos dos registros no "choquen", creando algun campo que los diferencie, como por ejemplo "usuario_actual" o algo por el estilo ;), ¿Me hice entender?, espero que si y que ademas te sirva de algo ;).

BuenaOnda
01-11-2007, 20:57:24
muchas gracias jhonny, voy tener en cuanta tu consejo..:).