FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Firebird 2 con FibPlus
Hola amigos
Estoy intentando agregar como parameter en un pFIbTransaction: 'Lock Timeout 5' Uso Delphi 7 , Firebird 2.01 con fibplus 6.45. Como tengo los codigos fuente de FibPlus, he modificado el FIB.pas y el Ibase.pas agregandole la constante isc_tpb_lock_timeout y el parametro LOCK TIMEOUT. Compilo e instalo nuevamente FibPlus. Al ejecutar la aplicacion me da un mensaje de error indicando que LOCK TIMEOUT 5 no existe. Seria posible que alguien me ayudara ya que no tengo los conocimientos para hacer estas modificaciones. Muchas Gracias. |
#2
|
||||
|
||||
¿Y qué es lo que quieres hacer exactamente?
¿Y por qué quieres modificar el fuente de Fibplus? ¿Y por qué quieres "meter" ese código? |
#3
|
|||
|
|||
El Santo Grial de las Transacciones
Estimado Casimiro Notevi.
La idea es configurar un sistema de ventas donde la pfIbTransaction tenga la conurrencia en: wait lock timeout 5 Esto quiere decir que cuando exista una concurrencia a un mismo registro, la mas nueva esperara un maximo de 5 segundos antes de dar un error de lock timeout. Si soluciono este problema, las transacciones con una cantidad de usuarios importantes no presentaran errores. Y los muy pocos que pudiera haber son manejados facilmente. Estas nuevas caracteristicas de Firebird 2 hace que se puedan hacer rutinas ( yo las hago como procedimientos almacenados) que tendrian la mitad de los problemas solucionados en el foro. Por eso pido que se integren para poder solucionar esto. Gracias. |
#4
|
||||
|
||||
Pues la verdad es que no lo he entendido muy bien, ¿quiéres decir algo así como esto?:
caja1: vende una lata de kikocola caja2: tiene que esperar 5 segundos para vender a otro cliente su kikocola caja3: vende, 5 segundos después, a otro cliente, una lata de kikocola caja2: sigue esperando los 5 segundos de la caja3 caja1: vuelve a pasar otra lata de kikocola caja2: sigue esperando... caja2: ahora vende su lata de kikocola A qué problemas te refieres con: "Estas nuevas caracteristicas de Firebird 2 hace que se puedan hacer rutinas ( yo las hago como procedimientos almacenados) que tendrian la mitad de los problemas solucionados en el foro." |
#5
|
|||
|
|||
transacciones wait lock timeout
estimado Casimiro Notevi
Me explico: 1.- Caja1, Caja2, Caja3 son clientes que tiene el mismo software. 2.- Sus correspondientes pFIbTransaction estan configuradas como sigue: ] write nowait rec_version read_committed ] Esto quiere decir que si Caja1 vende una lata de kikocola y en ese mismo instante Caja2 tambien vende una lata de kikocola se produce una concurrencia de 2 transacciones al mismo registro. Por lo tanto la transaccion que llego segunda por tener un ]"nowait"]no espera y lanza un error lock_conflict indicando al usuario esta situacion para despues hacer un rollback. Ante esta situacion el usuario debe rehacer la transaccion. Imaginate en un supermercado!!! ]DE LA OTRA FORMA] 1.- Caja1, Caja2, Caja3 son clientes que tiene el mismo software. 2.- Sus correspondientes pFIbTransaction estan configuradas como sigue: ] write wait LOCK TIMEOUT 5 rec_version read_committed ] Esto quiere decir que si Caja1 vende una lata de kikocola y en ese mismo instante Caja2 tambien vende una lata de kikocola se produce una concurrencia de 2 transacciones al mismo registro. En este caso la transaccion que llego segunda por tener un ]"wait"]espera a que la primera transaccion termine y despues procede a ejecutarse. Pero este ]"wait" tiene un peligro potencial, pues mientras no termine la transaccion anterior no se ejecutara la siguiente pudiendo pues transcurrir una cantidad de tiempo muy grande(se desconecto el cliente , etc.). Entonces aqui viene la gran solucion. Firebird 2 acompaña el parametro "wait" del parametro "Lock Timeout X". Esto significa que si la primera transaccion no se termina en 5 segundos, se producira un error isc_lock_timeout lo cual se maneja programaticamente. En ningun caso este parametro quiere decir que la segunda transaccion debe esperar 5 segundos. De hecho puedo colocarle un tiempo de 1 segundo si quiero. Y con respecto a lo ultimo. Si revisas las consultas del foro, la mayoria de ellas tienen que ver con consultas relacionadas con stocks, tablas maestro detalle, updates etc. |
#6
|
||||
|
||||
Creo que deberías leer este documento sobre las transacciones.
Está escrito por Juan José Rodríguez (Kinobi) |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Error al hacer insert (campo fecha) en firebird con fibplus | Acanol | Firebird e Interbase | 7 | 15-06-2006 09:05:07 |
Ejemplo maestro detalle con fibplus+firebird | Mauro® | Conexión con bases de datos | 1 | 12-05-2006 23:24:45 |
FibPlus | Malon | Conexión con bases de datos | 4 | 22-04-2004 01:41:49 |
IBX, IBO, Fibplus | raul_sal | Conexión con bases de datos | 6 | 04-06-2003 00:50:45 |
FibPlus y las Dll | Erik_Magnus | Firebird e Interbase | 0 | 23-05-2003 06:44:25 |
|