CREATE TRIGGER updateAmount
ON 送货从表
DECLARE @DeliveryNo NVARCHAR(12)
DELCARE @Amount  INT
DECLARE @CusId NVARCHAR(12)
SELECT @DeliveryNo =DeliveryNo ,@Amount=Amount From Inserted 
SELECT @CusId=CusId FROM 送货主表 WHERE DeliveryNo=@DeliveryNo
UPDATE 客户表 SET DeliveryAmount(+)-Amount WHERE CusId =CusId

解决方案 »

  1.   

    CREATE TRIGGER updateAmount
    ON 送货从表
    FOR update ,insert
    DECLARE @DeliveryNo NVARCHAR(12)
    DELCARE @Amount  INT
    DECLARE @CusId NVARCHAR(12)
    SELECT @DeliveryNo =DeliveryNo ,@Amount=Amount From Inserted 
    SELECT @CusId=CusId FROM 送货主表 WHERE DeliveryNo=@DeliveryNo
    UPDATE 客户表 SET DeliveryAmount(+)-Amount WHERE CusId =CusId
      

  2.   

    CREATE TRIGGER updateAmount
    ON 送货从表
    FOR INSERT,DELETE,UPDATE
    AS
    BEGIN
      IF EXISTS(SELECT 1 FROM INSERTED WHERE 1=1) 
        UPDATE 客户表
          SET DeliveryAmount = ISNULL(DeliveryAmount,0) + D.Amount
          FROM (SELECT A.CusID,SUM(B.Amount) AS Amount 
                   FROM 送货主表 AS A INNER JOIN INSERTED AS B
                     ON A.DeliveryNo = B.DeliveryNo
                   GROUP BY A.CusID) AS D
          WHERE 客户表.CusID = D.CusID
      ELSE
        UPDATE 客户表
          SET DeliveryAmount = ISNULL(DeliveryAmount,0) - D.Amount
          FROM (SELECT A.CusID,SUM(B.Amount) AS Amount 
                   FROM 送货主表 AS A INNER JOIN DELETED AS B
                     ON A.DeliveryNo = B.DeliveryNo
                   GROUP BY A.CusID) AS D
          WHERE 客户表.CusID = D.CusID
    END