Saturday, June 21, 2008

Re: [pgsql-es-ayuda] Duda en necesidad de bloquear tablas

siempre con copia a la lista

2008/6/21 Arturo <arturomunive@gmail.com>:
>>
>>> Ahora que he dormido un poco pensaba, podria poner uan columna en la
>>> compra,
>>> un booleano quiza que se llame en_proceso
>>> y que cuando voy a ejecutar el pago o transaccion lo primero que haga es
>>> marcarla (y hacer un commit) luego ya puedo procesar tranquilo en mi
>>> transaccion normal.
>>>
>>
>> mas campos calculados... :S
>>
>
> Al parecer es una mala idea, por que?
>

Personalmente le tengo fobia a los campos calculados... es algo
adicional de lo que los programadores deben tener presente (y que
pueden olvidar) cuando la base de datos te da formas de evitarlo...

otro punto que pasa si haces el update de tu campo, haces el commit y
entonces se cae el sistema o hay una falla de energia o etc, etc,
etc... (el segundo etc es especialmente preocupante ;)

ademas pensando en tu respuesta anterior...

si haces un SELECT ... FOR UPDATE en la tabla de compras, si alguien
desea insertar un pago no tendra que intentar bloquear los registros
en la tabla de compras? pero como los registros estaran bloqueados no
podra hasta que sueltes el bloqueo en la tabla de compras, solo
entonces podra seguir procesando su insercion y para entonces tu
transacion ya habra hecho COMMIT o ROLLBACK... en esencia es lo mismo
que tu campo "en_proceso" pero con bloqueos y sin datos de que
preocuparse...

--
Atentamente,
Jaime Casanova
Soporte y capacitación de PostgreSQL
Guayaquil - Ecuador
Cel. (593) 87171157
--
TIP 3: Si encontraste la respuesta a tu problema, publícala, otros te lo agradecerán

No comments: