Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-06-2010
JordiP JordiP is offline
Miembro
 
Registrado: nov 2009
Posts: 48
Poder: 0
JordiP Va por buen camino
Wink DUDA trabajar con varias sesiones en FireBird

Buenas, tengo una duda y queria plantearla:

Resulta que tengo una aplicación con una entrada por puerto TCP, en el momento de leer el texto entrante por TCP lo guarda en una tabla de mi base de datos "FireBird".
Por otro lado tengo un TIMER que cada segundo consulta dicha tabla a ver si hay cambios y para evitar conflictos tengo:
IBDataBase1
IBTransaction1
IBQuery1
y
IBDataBase2
IBTransaction2
IBQuery2
El IB...1 lo utilizo para insertar y modificar lo que me llega por el puerto TCP y el IB...2 para las consultas en el TIMER.

Mi duda es si la tabla del FireBird puede bloquearse mientras se hace el INSERT o UPDATE o el SELECT, es decir, mientras el IB...1 hace un INSERT el IB...2 puede hacer un SELECT y viseversa? el hecho que una sesion haga una consulta la otra puede modificar información?

Gracias por todo
Responder Con Cita
  #2  
Antiguo 09-06-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

En Firebird las escrituras no bloquean a las lecturas. Únicamente dos escrituras simultaneas se bloquearán, pero no una escritura y diversas lecturas.

De la misma forma, el hecho de tener una o varias lecturas (consultas) en marcha, no bloquea que otra transacción inicie al mismo tiempo una escritura.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 09-06-2010
JordiP JordiP is offline
Miembro
 
Registrado: nov 2009
Posts: 48
Poder: 0
JordiP Va por buen camino
Marc, entonces 2 escrituras simultaneas bloquean, pero acabarán haciendose las 2 no ?, es decir, lo que supongo que hace es poenrlo en cola y hacer una escritura y luego la otra, es asi ?

Gracias por la respuesta
Responder Con Cita
  #4  
Antiguo 09-06-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola Jordi.

Dos escrituras en dos transacciones que estén activas simultaneamente no se acabarán haciendo. La segunda escritura te dará un error de deadlock y no se hará. Tendrás que finalizar la primera transacción antes de poder modificar ese registro en una segunda transacción.

NOTA: Naturalmente el bloqueo solo se da si las dos escrituras intentan escribir sobre el mismo registro de la base de datos. En cambio puedes tener sin problemas tantas escrituras como quieras, siempre que modifiquen registros distintos o añadan nuevos registros.

Salutacions.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 09-06-2010
JordiP JordiP is offline
Miembro
 
Registrado: nov 2009
Posts: 48
Poder: 0
JordiP Va por buen camino
es cierto, solo si se quiere acceder al mismo registro al mismo tiempo, por suerte eso es dificil que ocurra, pero es bueno saberlo.

Gracias Marc, duda solucionada
Responder Con Cita
  #6  
Antiguo 09-06-2010
Gallosuarez Gallosuarez is offline
Miembro
 
Registrado: feb 2007
Posts: 92
Poder: 18
Gallosuarez Va por buen camino
Usar Eventos en Firebird...

JordiP:

Con lo que respecta a tu problema (aunque no hay muchos detalles de lo que hace tu aplicación) , creo que una de las mejores soluciones es utilizar eventos en Firebird. Creeme que es una gran herramienta, por mi parte los he utilizado extensamente en problemas similares a lo que tu quieres hacer y han resultado ser una maravilla.

Saludos

Gerardo Suárez Trejo.
Responder Con Cita
  #7  
Antiguo 09-06-2010
JordiP JordiP is offline
Miembro
 
Registrado: nov 2009
Posts: 48
Poder: 0
JordiP Va por buen camino
Thumbs up

puedes darme más inform. de los eventos en FireBird !!!!
Que es, a travez del IBDatabase ?
Pero en el tema de insertar, modificar y borrar que eventos pueden ser utiles, en principio con un try.... except ...end ya controlamos posibles errores.

Te agradeceria más info. de los eventos x favor

Gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Trabajar con OOP - Duda Paulao Varios 4 03-06-2008 12:30:53
DBGrid en varias sesiones Fenareth Tablas planas 7 09-11-2007 01:21:59
Duda sobre tabla access de varias tablas Mathom Varios 28 24-11-2005 18:09:50
Trabajar con varias tablas luxus Conexión con bases de datos 3 22-08-2005 18:32:15
Trabajar con Firebird StartKill Firebird e Interbase 1 20-01-2004 23:31:25


La franja horaria es GMT +2. Ahora son las 12:39:54.


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
Copyright 1996-2007 Club Delphi