Trigger

04/02/2004 - 20:56 por Gabriel | Informe spam
Hola Foro, vengo de Interbase y el siguiente trigger me funciona pero no lo
entiendo demasiado bien
Aguien me lo podria explicar un poco
sobre todo porque la parte de Single y Multi, no hay suficiente con una
parte
i lo de +ISNULL y -ISNULL tampoco lo entiendo porque no hay suficiente
solo con una parte
Gracias por Adelantado
Gabriel


USE Northwind
GO

CREATE TRIGGER tr_OrderDetails_TotalOrders
ON [Order details]
AFTER INSERT, DELETE, UPDATE
AS

IF @@rowcount = 1


UPDATE Orders
SET SaleTotal = SaleTotal
+ ISNULL(
(SELECT UnitPrice * Quantity * (1 - Discount)
FROM Inserted
WHERE Inserted.OrderID = Orders.OrderID), 0)
- ISNULL(
(SELECT UnitPrice * Quantity * (1 - Discount)
FROM Deleted
WHERE Deleted.OrderID = Orders.OrderID), 0)

ELSE


UPDATE Orders
SET SaleTotal = SaleTotal
+ ISNULL(
(SELECT SUM(UnitPrice * Quantity * (1 - Discount))
FROM Inserted
WHERE Inserted.OrderID = Orders.OrderID), 0)
- ISNULL(
(SELECT SUM(UnitPrice * Quantity * (1 - Discount))
FROM Deleted
WHERE Deleted.OrderID = Orders.OrderID), 0)

GO

Preguntas similare

Leer las respuestas

#1 Maximiliano D. A.
04/02/2004 - 21:03 | Informe spam
Hola,

bueno como veras ese trigger esta pensado para actuar cuando haces una
actualizacion de un solo registro o de varios si?

bien el Isnull lo que hace basicamente es si detecta un nulo en la expresion
(SELECT UnitPrice * Quantity * (1 - Discount)
Mostrar la cita
que ponga un 0, es porque null no es nada en cambio un 0 si, por lo cual la
funcion matematica en este caso la Resta funcionaria bien, imaginate restar
1 - null? ahi en el trigger restara 1 - 0 y no null, me explico?

Salu2

Maximiliano Damian Accotto


"Gabriel" escribió en el mensaje
news:%
Mostrar la cita
lo
Mostrar la cita
#2 Gabriel
04/02/2004 - 21:52 | Informe spam
Gracias por contestar Maximiliano
lo voy entendiendo mejor no entiendo bien lo de

como veras ese trigger esta pensado para actuar cuando haces una
Mostrar la cita
Si modifico una linia de factura solo puedo modificar de una en una , creo
Si solo pusiera la segunda parte la Multi
Select SUM(
Tambien me funcionaria siempre , que diferencia abria ?

De nuevo Gracias



"Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> escribió en el
mensaje news:#EgE#
Mostrar la cita
expresion
Mostrar la cita
la
Mostrar la cita
restar
Mostrar la cita
suficiente
Mostrar la cita
#3 ulises
05/02/2004 - 20:15 | Informe spam
Hola Gabriel,

Con permiso de Maxi (espero que hayas disfrutado de tus
vacaciones :) ), como te has dado cuenta el trigger se
invoca una sola vez al final de todas las actualizaciones
en la tabla, centrándonos en tu caso: si sólo empleases la
segunda parte que incluye el SUM funcionaría correctamente
el trigger, la razón de separarlo (según entiendo) es
optimizar el rendimiento de este trigger cuando solo se
actualice un registro que deben ser la mayor parte de las
operaciones de actualización que se realicen.

Saludos,
Ulises

Mostrar la cita
haces una
Mostrar la cita
una en una , creo
Mostrar la cita
ar> escribió en el
Mostrar la cita
cuando haces una
Mostrar la cita
nulo en la
Mostrar la cita
0 si, por lo cual
Mostrar la cita
bien, imaginate
Mostrar la cita
explico?
Mostrar la cita
mensaje
Mostrar la cita
me funciona pero no
Mostrar la cita
suficiente con una
Mostrar la cita
porque no hay
Mostrar la cita
Ads by Google
Search Busqueda sugerida