FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Es posible dos transacciones simultanes?
Hola foro tengo una pequeña consulta. trabajo con Delphi5 e IB6 server. Si tengo dos tabla A y B, que no tienen entre si, relacion alguna.
si de pronto un usuario quiere agregar registros a la tabla A, se comienza una Transaccion para ello, ahora si en ese momento otro usuario quiere agregar un registro en la tabla B, va a tener que esperar hasta que el A termine o se puede hacer algo para tener transacciones simultaneas. Espero me haya podido explicar saludos para todos |
#2
|
||||
|
||||
Interbase tiene una estructura muy particular, transacciones multigeneracionales, que no te impiden el hacer lo que deseas, pues los bloqueos de pagina nunca se producen (hasta donde recuerdo).
__________________
Héctor Geraldino Software Engineer |
#3
|
||||
|
||||
Eso es perfectamente posible. De hecho, si usas un conjunto de componentes que lo soporte (IBX, IBO, MDO, etc) podrías tener mas de una transacción dentro de una sola conexión...
Y si, hector, en interbase (desde que yo lo conozco, 5.x) los bloqueos son a nivel de registro y no de página, además que gracias a la arquitectura multigeneracional, las transacciones de escritura nunca bloquean a las transacciones de lectura. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#4
|
|||
|
|||
que me recomiendan- codigo o los componentes
y para lograrlo que es mejor usar, los componentes de la solapa de interbase o a traves de codigo tambien se puede hacer?
Saludos |
#5
|
||||
|
||||
Podes hacerlo con los componentes de tu preferencia: IBX, IBO, FIB, BDE, ADO, etc.
Saludos.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#6
|
|||
|
|||
Gracias Jachguate por tu respuesta
Ahora, de los componentes que me nombras yo tengo solamente una solapa que dice INTERBASE, esa me sirve? o me tengo que descargar los componentes que me decis. Disculpa que te siga preguntando pero segun tu experiencia cual me recomendas, yo tengo delphi 5 e Interbase 6. Y cual de ellos si cambio de version funciona normalmente? Saludos y gracias |
#7
|
|||
|
|||
Hola Patricio...
Como se cita más arriba, Interbase puede manejar varias transacciones al mismo tiempo. Lo que debes hacer es asignar una transaccion a cada tabla, lo demás lo maneja Interbase, además al tener varias transacciones es más rápido. Yo uso los componentes de la paleta Interbase que vienen con Delphi Espero te sirva de algo.. Saludos |
#8
|
||||
|
||||
Cita:
En algunos (como IBX y MDO) el manejo de las transacciones es explícito, mediante un componente TxxTransaction (TIBTransaction, TMdoTransaction) y en otros (como el BDE o IBO) el manejo es mas automático. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#9
|
|||
|
|||
Un poco perdido
bueno me decidi por usar los componentes de la solapa de Interbase, ahora donde puedo encontrar ejemplos de como usar estos componentes?
lo que si estoy medio perdido para arrancar usando estos componentes yo antes tengo un ModuloDatos, en donde tengo las tablas y la base de datos en si y cuando quiero agregar o modificar hago lo siguiente: FModuloDatos.Basededatos.StartTransaction; Modificotodo; FModuloDatos.Basededatos.Commit; como seria esto mismo con los componentes de la solapa de Interbase? Saludos espero poder explicarme pero estoy cazando la idea de los componentes |
#10
|
|||
|
|||
He mirado un poco y lo que yo necesitaria tener puede ser esto:
Un IBDataBase relacionado con mi base de datos que es el que van a hacer referencia los IBTransaction y un IBTransaction por cada una de las tablas que tengo cuando voy a insertar a las tablas directamente trabajo con la transaccion relacionada a dicha tabla. Esto es asi? |
#11
|
||||
|
||||
Cita:
Podrías tener una sola transacción en toda la aplicación, o dividirla en secciones "funcionales" de acuerdo al manejo de los querys, dado que con IBX los datasets se cerrarán al realizar un commit o rollback en la transacción. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#12
|
|||
|
|||
Sigo en Problemas
lo que pasa es que yo tengo que agregar los datos de una empresa y a la misma agregarle en otra tabla todas las direcciones y en otra tabla todos los telefonos.
Entonces como no quiero usar tablas auxialiares mi idea era que cuando se agregar las direcciones tener una transaccion para eso, cuando se agregan los telefonos tener otra transaccion y cuando los datos de la empresa otra transaccion, porque si el usuario cancela el ingreso de la empresa, tengo que volver a atras lo que se ingreso en la tabla de Telefonos y Direcciones. No se si me explico bien. Hice algo asi pero no me dio resultado cuando se fue a agregar una direccion hice IBTransactionDireccion.StartTransaction .... y cuando me dio el ok con los datos de la empresa hice IBTransactionEmpresa.StartTransaction .... IBTransactionEmpresa.Commit IBTransactionDireccion.Commit //ahi confirmo luego que se dio el ok en la empresa pero obviamente me dio error, cual seria la mejor manera de hacer lo que quiero? Saludos |
#13
|
||||
|
||||
El modelo de transacciones que uses tiene mucho que ver con el diseño "funcional" de tu aplicación.
Lo que no te recomiendo es que uses transacciones separadas, por ejemplo, para insertar un encabezado de factura y sus detalles, pues si ocurre un error al insertar un detalle y has dado commit a la transacción del encabezado, ocurrirá que se quede un encabezado sin detalle, y estarías como volviendo a la edad de piedra, perdiendo la acidez de las transacciones. Saludos.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
|
|