Calcular saldo en tabla de movimientos

06/08/2004 - 16:38 por Josué Maldonado | Informe spam
Hola lista,

Antes que nada mis disculpas si esto es demasiado obvio o si fue
contestado antes, pero busque sin exito hasta ahora, estoy iniciando en
mssql (MSDE).

En una tabla de movimientos (entradas/salidas) se debe registrar el
saldo por cada cuenta por movimiento realizado, cual es la mejor manera
de asegurarme que cada transaccion guarda el saldo correcto. La tabla de
cuentas tiene un columna donde se almacena el saldo actual de la cuenta,
lo que no tengo claro es como hacer para evitar que dos movimientos
recurrentes almacenen saldos incorrectos.


Sinceramente,
Josué Maldonado.
"Un sutil pensamiento erróneo puede dar lugar a una indagación
fructífera que revela verdades de gran valor." -- Isaac Asimov

Preguntas similare

Leer las respuestas

#1 Isaías
06/08/2004 - 17:41 | Informe spam
Genere una transaccion

BEGIN TRAN MyTran
..codigo SQL ..
IF @@ERROR
BEGIN
ROLLBACK TRAN MyTran
RETURN(0)
END

COMMIT TRAN MyTran
Respuesta Responder a este mensaje
#2 Josué Maldonado
06/08/2004 - 18:16 | Informe spam
Hola Isaías.

El 06/08/2004 9:41 AM, Isaías en su mensaje escribio:

Genere una transaccion

BEGIN TRAN MyTran
..codigo SQL ..
IF @@ERROR
BEGIN
ROLLBACK TRAN MyTran
RETURN(0)
END

COMMIT TRAN MyTran



He encontrado algo en los archivos y lo modifique para adaptarlo a mi
caso, lo hago con un trigger pero no se si de esta forma se garantiza
que las actualizaciones sean totalmente seriales

CREATE TRIGGER Control_stock_linea ON movs
FOR INSERT
AS
update movs
set movs.saldo=(INSERTED.val+ptest.saldo)
FROM movs INNER JOIN INSERTED ON
(inserted.id=movs.id)
inner join ptest on (ptest.code=inserted.pcode)

update ptest set ptest.saldo=movs.saldo
from ptest inner join movs on
(movs.pcode=ptest.code)


Sinceramente,
Josué Maldonado.
"Lo único seguro sobre algo que no hace falta decir, es que alguien va a
decirlo" -- Isaac Asimov
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida