FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Concurrencia "bloqueada" en Firebird.
Hola a todos,
Estoy trabajando con Delphi7 y Firebird 2.0 sobre Windows XP Pro. El caso es que he comprobado que si intento modificar un registro de la BD que ha sido modificado por otra sesión de la aplicación, y que por tanto está bloqueado, la ejecución del código de mi aplicación en Delphi se bloquea. Es decir, en lugar de saltar una Excepción de BD, la cual pudiera capturar y actuar en consecuencia, la ejecución del código de mi aplicación en Delphi se bloquea justo en la instrucción "execSQL" que lanzan el "update" sobre el registro bloqueado. ¿Es esto normal? ¿Hay alguna manera de provocar que salte una excepción que pueda capturar? Gracias. Un saludo. |
#2
|
||||
|
||||
Hola, te hago unas preguntas...
1. Que componente usa para hacer la el execSQL? 2. Justo despuesde hacer el execSQL hace algun commit? 3. TIene algun componente transaccional y que opciones tiene este?? (read commit, wait ó no wait)
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" |
#3
|
|||
|
|||
Hola RonPablo,
1. Utilizo los componentes Mercury. 2. Concretamente, tras el execSQL que me ocupa no hay commit. De todos modos, la instrucción que va tras el execSQL no llega a ejecutarse. 3. Utilizo componentes transaccionales (TMDOTransaction). Las opciones que tienen son: AutoCommit = False IdleTimer = 0 DefaultAction = TACommit. Un saludo. |
#4
|
||||
|
||||
en el componente de la transaccion al dar doble click sale como esta configurado... ahi dice si es read commit o algo similar, la cuestion es que despues de hacer una insercion es recomendble hacer commit, depronto ese puede ser su problema
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" |
#5
|
||||
|
||||
Resp
verifica tu transacion para ver si incluye readversion. De no ser asi te vas a causar muchos dolores de cabesa.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa. |
#6
|
|||
|
|||
Efectivamente, no tenía configurados los parámetros del componente Transaction. Con las pistas que me habéis dado, indicaré los parámetros:
NOWAIT: para que en caso de conflicto, no se bloquee. READCOMMITED: para ver la última version de los registros modificados (y confirmados (commit)) por otras transacciones. Por otra parte, recomiendo este documento para conocer las transacciones en IB y FB. http://www.intitec.com/varios/transacciones-0.2.6.pdf Gracias por el interés. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Comentario "aplastante" contra los que atacan la "piratería" | Casimiro Notevi | La Taberna | 12 | 07-03-2010 14:03:02 |
Necesito llamar a métodos de clases "hija" desde su clase "padre" | Flecha | OOP | 17 | 20-04-2007 00:03:53 |
Ventana MDI, "Siempre visible" y "Pantalla completa" | ixMike | API de Windows | 7 | 11-04-2007 18:36:55 |
"ChequeaEsto" elegido el futuro "Killer CLubDelphi" | mamcx | Noticias | 51 | 31-10-2006 20:56:32 |
"Lock time out error" tabla bloqueada | david duarte | Providers | 4 | 12-04-2006 17:38:05 |
|