Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   deadlock update (https://www.clubdelphi.com/foros/showthread.php?t=49595)

BuenaOnda 25-10-2007 04:28:35

deadlock update
 
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

Chequea los triggers.
 
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..
 
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..:).


La franja horaria es GMT +2. Ahora son las 03:35:36.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi