[Lazarus-es] SQLQuery Refresh

Carlos German Tejero german_tejero en yahoo.com.ar
Mar Nov 11 22:40:25 CET 2008


A ver si pudeo.
Las transacciones en los motores de base de datos deben cumplir con ACID:
A: Atomicidad, o sea que una transaccion se debe completar todo o deshacer
toda, no pueden quedar cosas a medias.
C: Concurrencia, se deben poder ejecutar mas de una transaccion
concurrentemente.
I: Isolation o aislamiento, una transaccion no debe interferir con la otra.
D: Durabilidad, cuando una transaccion se compremote, los cambios son
persistentes.

Ahora, el aislamiento entre transacciones (isolation) es configurable, el
standard de SQL define 4 isolations level, y en la mayoria de los motores
implementan solo algunos de esos. Incluso algunos de forma diferente. Loa
cuatro tipo de isolation son READ COMMITTED, DIRTY READ, REPETEABLE READ y
el cuarto no lo recuerdo.

El tema es que, por ejemplo si usas READ COMMITTED, una transaccion no ve
los cambios hechos por otra, hasta que esta no los halla comprometido.

entonces en la transaccion 1 se hace un insert, en la tabla persona:
INSERT INTO PERSONA VALUES("german");

si la transaccion 2 realiza un select de la tabla persona, no va a ver el
registro de german:
SELECT * FROM PERSONA;

recien cuando la transaccion 1 haya realizado el COMMIT, la transaccion
podra ver el registro. Tambien debes tener cuidado con motores como Firebird
ya quefunciona algo diferente a otros motores. En motores como PostgreSQL,
MySQL, SQLite funcionan de forma standard y solo se inicia una transaccion
de forma explicita con START TRANSACCION. En cambio en Firebird siempre se
inicia una transaccion de forma implicita quieras o no.
Espero que algo de lo que dije sirva, igual deberias leer la doc de tu motor
de base de datos, ya que cada uno es un mundito aparte.
Saludos.


2008/11/11 Usuario Anónimo <usuarioanonimomysql en gmail.com>

> ¿Lo puedes ilustrar con un ejemplo?
>
> Gracias.
>
> El 11 de noviembre de 2008 19:08, Tejero, Carlos German <
> german.tejero en gmail.com> escribió:
>
>> Si estas usando dos transacciones diferentes deberias chequear el
>> isolation level que estas usando y si has comiteado la transaccion de
>> modificacion antes de realizar el refresh de la de consulta.
>> Saludos.
>>
>> El mar, 11-11-2008 a las 17:41 +0100, Usuario Anónimo escribió:
>>
>> > No lo se, a ver si alguien nos saca de dudas.
>> >
>> > Saludos.
>> >
>> >
>> >
>> > El 11 de noviembre de 2008 18:14, Markisich Emiliano
>> > <markisoft en yahoo.com.ar> escribió:
>> >         Si pero no lo actualiza por eso preguntaba si hay que hacer
>> >         algo mas,
>> >         aparte de SQLQuery1.Refresh
>> >
>> >         Usuario Anónimo escribió:
>> >         > ¿Has probado con SQLQuery1.Refresh;?
>> >         >
>> >         > 2008/11/11 Markisich Emiliano <markisoft en yahoo.com.ar
>> >
>> >         > <mailto:markisoft en yahoo.com.ar>>
>> >         >
>> >         >     tengo dos ventanas una de listado y otra que se abre
>> >         para dar un ALTA,
>> >         >     cada ventana tiene su transaccion.
>> >         >     el problema es que cuando doy de alta un registro no se
>> >         actualiza
>> >         >     en la
>> >         >     ventana de listado, para esto en delphi hacia un refresh
>> >         en la
>> >         >     query del
>> >         >     listado
>> >         >
>> >         >     esto lo puedo solucionar desactivando y volviendo a
>> >         activar el query
>> >         >     pero en la ventana desaparecen los datos y vuelven a
>> >         aparecer,
>> >         >     queda feo
>> >         >     y ademas pierdo el registro seleccionado porque vuelve
>> >         el puntero al
>> >         >     primer registro.
>> >         >
>> >         >     ¿se entiende?
>> >         >
>> >         >      sqListado.Refresh;
>> >         >
>> >         >
>> >         >     Saludos
>> >         >
>> >         >     Usuario Anónimo escribió:
>> >         >     >
>> >         >     > ¿Puedes poner un ejemplo de refresh? ¿Para que sirve?
>> >         ¿Te refieres a
>> >         >     > un refetch data?
>> >         >     >
>> >         >     > Saludos.
>> >         >     >
>> >         >     >
>> >         >     > 2008/11/11 Markisich Emiliano <markisoft en yahoo.com.ar
>> >         >     <mailto:markisoft en yahoo.com.ar>
>> >
>> >         >     > <mailto:markisoft en yahoo.com.ar
>> >         <mailto:markisoft en yahoo.com.ar>>>
>> >         >     >
>> >         >     >     Hola, ¿ me podrian explicar como hacer un refresh
>> >         con este
>> >         >     componente?
>> >         >     >     si es que funciona.
>> >         >     >
>> >         >     >     Gracias!!
>> >         >     >     _______________________________________________
>> >         >     >     Lazarus-es mailing list
>> >         >     >     Lazarus-es en lazarus.freepascal.org
>> >         >     <mailto:Lazarus-es en lazarus.freepascal.org>
>> >         >     >     <mailto:Lazarus-es en lazarus.freepascal.org
>> >         >     <mailto:Lazarus-es en lazarus.freepascal.org>>
>> >         >     >
>> >         http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>> >         >     >
>> >         >     >
>> >         >     >
>> >         >
>> >
>> ------------------------------------------------------------------------
>> >         >     >
>> >         >     > _______________________________________________
>> >         >     > Lazarus-es mailing list
>> >         >     > Lazarus-es en lazarus.freepascal.org
>> >         >     <mailto:Lazarus-es en lazarus.freepascal.org>
>> >         >     >
>> >         http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>> >         >     >
>> >         >
>> >         >     _______________________________________________
>> >         >     Lazarus-es mailing list
>> >         >     Lazarus-es en lazarus.freepascal.org
>> >         >     <mailto:Lazarus-es en lazarus.freepascal.org>
>> >         >
>> >         http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>> >         >
>> >         >
>> >         >
>> >
>> ------------------------------------------------------------------------
>> >         >
>> >         > _______________________________________________
>> >         > Lazarus-es mailing list
>> >         > Lazarus-es en lazarus.freepascal.org
>> >         >
>> >         http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>> >         >
>> >
>> >         _______________________________________________
>> >         Lazarus-es mailing list
>> >         Lazarus-es en lazarus.freepascal.org
>> >         http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>> >
>> >
>> > _______________________________________________
>> > Lazarus-es mailing list
>> > Lazarus-es en lazarus.freepascal.org
>> > http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>
>> _______________________________________________
>> Lazarus-es mailing list
>> Lazarus-es en lazarus.freepascal.org
>> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lazarus.freepascal.org
> http://www.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>


-- 
Carlos Germán Tejero
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20081111/95ea50ec/attachment-0001.html>


More information about the Lazarus-es mailing list