FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Que es mejor 1 transaccion por registro o 1 para varios.
Hola amigos, estoy teniendo un problema con mi base de datos de Interbase, me ha estado saliendo el error de "Dead lock", aqui me decian que es probable que sea por la cantidad de Transacciones abiertas, mi sistema por cada nuevo registro que agrega un usuario abre una transaccion y quiero modificarlo para que sea una sola transaccion para varios registros nuevos, solo que tengo una duda, al hacer esto, no requiero de mas memoria, o mas espacio en disco?, les agradeceria que me pudieran aconcejar sobre que me conviene mas, pues quiero hacer mas rapido mi programa, gracias.
__________________
vaquero |
#2
|
||||
|
||||
A mi juicio la transación tiene que abarcar un proceso determinado y no un registro, salvo que este solo constituya un proceso.
Por ejemplo, si para grabar una factura, preciso a parte de dar de alta todas las líneas que va a tener, al finalizar la misma actualizar el almacén y grabar en la ficha del cliente la fecha de la factura que será la de la última vez que compró todo este proceso lo incluyo en una transación, a parte de que pudiera haber otras anidadas, si falla alguna parte del proceso, se ejecuta el RollBack y dejamos todo como estaba. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
|||
|
|||
Ya se que una transaccion tiene que ver con un proceso en si, perdon pero en mi comentario no especifique, quise decir que en mi sistema este proceso abarca lo que es una alta o una modificacion y hasta ahi, cuando el usuario da guardar en seguida se da el commit, lo que quiero saber es si me convendria dar commit o roollback hasta que el usuario lo desee, osea que pueda dar de alta varios registros y hasta "n" registros dados de alta entoces si, dar commit. No se si me explico.
__________________
vaquero |
#4
|
|||
|
|||
Perdon, no deberia referirme tanto a "dar de alta registros", mi sistema lo unico que hace es capturar todo lo referente a una cuenta catastral, osea un "A,B,C" comun y corriente, y mi proceso para una transaccion solo abarca una alta o una modificacion; por aqui lei que el error "Internal gds software consistency check (cant continue after bugcheck)" era de interbase y posiblemente de debia a que se abrian muchas transacciones a la vez, es por eso que inicie este hilo, que hago ..... ?
__________________
vaquero |
#5
|
||||
|
||||
Mira este ejemplo, que te viene con los propios componentes IB:
Código:
procedure TForm1.ApplyButtonClick(Sender: TObject); begin with CustomerQuery do begin IBDatabase1.Open; IBTransaction1.StartTransaction; Table1.Insert; Table1.FieldByName('QUANTITY').AsInteger := StrToIn(Edit1.Text); Table1.Post; IBTransaction1.Commit; end; end; Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#6
|
|||
|
|||
Gracias marcos, tienes razon, solo quisiera ver si no me pudieras explicar que es exactamente un "DeadLock" y este error "Key Violation - Internal gds software consistency check (cant continue after bugcheck), este error tiene que ver con la cantidad de transaciones abiuertas? , te agradeceria mucho que me pudieras ayudar, gracias, saludos.
__________________
vaquero |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|