Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-04-2009
sherlock sherlock is offline
Registrado
 
Registrado: feb 2009
Posts: 4
Poder: 0
sherlock Va por buen camino
Lightbulb Hacer un DirtyRead a tras una consulta de insercion

Hola,

Me gustaria saber la manera de hacer un DirtyRead de una consulta Select tras realizar un Insert utilizando objetos TQuery en Delphi5.
Me explico:
Tengo una consulta Select que se ejecuta tras una insercion en un proceso transaccional, de manera que hasta que no acabe todo no quiero hacer el COMMIT. Como he dicho, el Select se ejecuta tras haber realizado una consulta Insert que añade un registro a la tabla y me gustaria que ese Select se hiciese de la tabla actualizada teniendo en cuenta el registro recien insertado. Bueno espero haberme explicado bien.

La pregunta es como se podria hacer un DirtyRead en Delphi ?? Tengo entendido que los DirtyRead son un mecanismo no muy aconsejable pero que permiten tener la tabla commiteada, verdad??
O si por el contrario seria necesario implementar algun mecanismo paralelo, por ejemplo una tabla en memoria que vaya almacenado los datos tras el insert y hacerle los Select a esta tabla.

Bien, espero vuestros consejos y muchas gracias.

Saludos,
Responder Con Cita
  #2  
Antiguo 02-04-2009
sherlock sherlock is offline
Registrado
 
Registrado: feb 2009
Posts: 4
Poder: 0
sherlock Va por buen camino
Vale, me respondo.

Para hacer el Dirtyread hay que especificarselo a la propiedad TranslationIsolation de la base de datos.

Algo como esto:
MiDatabase.TransIsolation := tiDirtyRead;

Pero he probado tanto esto como el modo ReadCommitted y no funciona.

Explico nuevamente o de otra forma lo que quiero conseguir:

Tengo un blucle for que recorre N elementos de un array a insertar en la BD. Uno de los campos a insertar se obtiene a traves de una consulta SELECT con un parametro del elemento N1 del array. Una vez tengo todos los valores para los campos, hago el INSERT.
Pues bien, el problema viene cuando al hacer el SELECT tiene que devolver un valor de un registro previamente insertado (todavia no hemos hecho COMMIT porque el for no ha acabado). Es decir ese registro todavia no se ha actualizado en la BD.

Bien, seguiremos intentandolo a ver y toda respuesta sera bienvenida.

saludos,
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
hacer un SUM de una consulta ya hecha egarc Conexión con bases de datos 9 27-05-2008 09:10:43
Problema al hacer consulta SQL pabliyo SQL 6 29-01-2008 10:56:17
insercion, modificacio y consulta DML broodwing009 Firebird e Interbase 2 08-11-2007 00:22:59
imprimir consulta tras otra satabel Impresión 1 31-10-2005 17:19:23
hacer una consulta de eliminacion JODELSA SQL 6 07-06-2005 16:01:36


La franja horaria es GMT +2. Ahora son las 02:33:59.


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