Maestro - Detalles

06/10/2005 - 22:30 por jpablos | Informe spam
Saludos .

Recientemente se me ha presentado un problema en las tablas donde trabajo,
tengo una tabla de facturas y una de detalle de facturas, en la tabla de
facturas tengo los totales de la transaccion y en la de detalle de facturas
tengo el desglose de ese total, pero debido a un problema que todavia no se
el motivo mi aplicacion grabo mal los valores de tal modo que el campo total
de mi cabecera de facturas tenia un total de 45.50 y el la suma de los
detalles sumaba 40.37, al parecer en el proceso de grabacion paso algo y no
se guardo un registro de los detalles, pero mi pregunta es hay alguna manera
en sql de decirle que si mis tablas estan relacionadas y no coinciden los
detalles me mande un mensaje de error y no se guarde nada en las tablas, me
han dicho que en oracle (realmente no conozco oracle) se puede relacionar 2
campos de 2 tablas uno como maestro y otro como detalle, y si no coinciden
los valores en esos campos genera un mensaje de error, se puede hacer algo
parecido en sql server ???? o como podria solucionar este problema que me
ocurre para que no vuelva a pasar ????

Gracias ...
 

Leer las respuestas

#1 Alejandro Mesa
06/10/2005 - 22:52 | Informe spam
Puedes crear un trigger que chequee que la suma de los detalles sea igual al
total del maestro.

Ejemplo:

create trigger tr_factura_detalle_ins on dbo.factura_detalle
for insert
as
set nocount on

if exists (
select 1
from dbo.factura as f inner join inserted as i
on f.facturaid = i.facturaid
group by f.facturaid
having max(f.factura_total) != sum(i.precio_unitario * i.cantidad)
)
begin
rollback transaction
raiserror('El total de la factura no coincide con la suma de ...', 16, 1)
end

go


AMB

"jpablos" wrote:

Saludos .

Recientemente se me ha presentado un problema en las tablas donde trabajo,
tengo una tabla de facturas y una de detalle de facturas, en la tabla de
facturas tengo los totales de la transaccion y en la de detalle de facturas
tengo el desglose de ese total, pero debido a un problema que todavia no se
el motivo mi aplicacion grabo mal los valores de tal modo que el campo total
de mi cabecera de facturas tenia un total de 45.50 y el la suma de los
detalles sumaba 40.37, al parecer en el proceso de grabacion paso algo y no
se guardo un registro de los detalles, pero mi pregunta es hay alguna manera
en sql de decirle que si mis tablas estan relacionadas y no coinciden los
detalles me mande un mensaje de error y no se guarde nada en las tablas, me
han dicho que en oracle (realmente no conozco oracle) se puede relacionar 2
campos de 2 tablas uno como maestro y otro como detalle, y si no coinciden
los valores en esos campos genera un mensaje de error, se puede hacer algo
parecido en sql server ???? o como podria solucionar este problema que me
ocurre para que no vuelva a pasar ????

Gracias ...

Preguntas similares