Muchas gracias por su ayuda, realizare las pruebas con las opciones que me propusieron...!!
El 4 de octubre de 2010 12:08, Alvaro Herrera <[email protected]>escribió: > Excerpts from Diego Ayala's message of lun oct 04 08:07:25 -0400 2010: > > buen dia compañeros, tengo una consulta , la gente de desarrollo esta > > teniendo un incoveniente durante la ejecucion de una transaccion, que es > la > > siguiente, ellos poseen un procedimiento que ejecuta una transaccion, > dentro > > del cual se evaluan ciertas cosas, la duración de esta transaccion es > > alrededor de 300 a 500 ms. al hacer commit esta transaccion se almacena > en > > una tabla A, la situacion radica en que cuando se esta ejecutando esta > > transacción, ingresa otra transacción que verifica la situacion de la > > primera transaccion, esta segunda transacción, evalua la primera y como > se > > ejecuta en menos tiempo que la primera, la segunda almacena datos errones > en > > otra tabla B, como resultado de la primera transaccion. La consulta es si > > hay algun metodo o funcion en PostgreSQL que ayude para evitar que la > > segunda transaccion evalue la primera, como bloquear la segunda > transaccion > > hasta que la primera culmine .. > > Podrías obtener un lock al principio de cada una, por ej. con > pg_advisory_lock(). > > Otra alternativa sería usar modo de aislación serializable (SET > TRANSACTION ISOLATION LEVEL SERIALIZABLE). Tendrías que asegurarte que > si una de ellas falla, tendría que empezar de nuevo; creo que esta > alternativa es menos conveniente en tu caso. > > -- > Álvaro Herrera <[email protected]> > The PostgreSQL Company - Command Prompt, Inc. > PostgreSQL Replication, Consulting, Custom Development, 24x7 support >
