FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Totalmente sí. Debes usar las transacciones, inclusive para las Consultas (Select...)
Una estructura muy usada y bastante buena en Delphi es: (Suponiendo que ya estás conectado y todo eso)
Funciona bastante bien y se acaban la mayoría de los problemas. Recordar, siempre hacer las operaciones contra la BBDD en una transacción. SIEMPRE. Santiago.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#2
|
||||
|
||||
El StartTransaction debe ir fuera del bloque try; ya que si no puede iniciarse la transaccion, no podras hacer el Rollback
La documentacion de Embarcadero recomienda hacerlo de esta manera:
Se puede reemplazar el FDConnection por un componente de Transaction, no hay problema. |
#3
|
||||
|
||||
Por otra parte, porque utilizar una Transaccion para lecturas? Excepto en casos en los que explicitamente se desee bloquear al resto para que no puedan actualizar hasta que la aplicacion termine de consumir esos datos; pero en general todos deberian poder leer sin bloquear al resto
|
#4
|
||||
|
||||
Yo no suelo hacerlo implícitamente, sino que dejo a los componentes que se encarguen ellos automáticamente, incluyo en un datamodule principal un componente de bases de datos y otro de transacciones, ambos enlazados entre sí y me despreocupo de mantener yo las transacciones.
Vista en texto sería esto: Código:
object DB1: TIBDatabase'); DatabaseName = ''localhost:192.168.1.100:\datos\unabasededatos.fdb''' ); Params.Strings = ('); ''user_name=SYSDBA'''); ''password=masterkey'''); ''lc_ctype=ISO8859_1'')'); LoginPrompt = False'); DefaultTransaction = TR1'); SQLDialect = 3'); Left = 157'); Top = 56'); end'); object TR1: TIBTransaction'); DefaultDatabase = DB1'); Params.Strings = ('); ''read_committed'''); ''rec_version'''); ''nowait'')'); Left = 218'); Top = 56'); end'); |
#5
|
||||
|
||||
Cita:
Vas a sobrecargar el sistema con una lógica que no necesita y a la que no le vas a sacar ningún rendimiento.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#6
|
||||
|
||||
Cita:
De forma predeterminada, firebird usa transacciones siempre, incluso select. No hay que llamarlas implícitamente. |
#7
|
||||
|
||||
Y sí. Firebird hace de manera automática la transacción. Por lo cual, al final de tu consulta deberías hacer un Commit, o un Rollback.
__________________
Uno es responsable de lo que hace y de lo que omite hacer. |
#8
|
||||
|
||||
Cita:
La propiedad "DefaultAction" del componente TIBTransaction. |
#9
|
||||
|
||||
Cita:
Cita:
Que FB lo haga implícitamente es una decisión interna, pero entiendo que a nivel general un usuario no debe usar transacciones para SELECT. Esto me parece la excepción dentro de los SGBD's. ¿no?
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#10
|
||||
|
||||
Por supuesto que no necesita usarlas.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Duda existencial | rm_machado | Tablas planas | 5 | 03-03-2009 06:17:09 |
Ayuda con duda existencial | poliburro | La Taberna | 19 | 30-07-2007 09:30:39 |
Duda existencial | MaMu | OOP | 3 | 27-09-2006 15:37:40 |
duda existencial | nightynvid | La Taberna | 2 | 05-09-2006 14:12:20 |
Duda Existencial (datamodule) | vipernet | Conexión con bases de datos | 5 | 08-06-2006 20:15:30 |
|