如题,当在表a中插入一条记录后,后台触发器更改 
update 表b 表b.1=...,表b.2=... 
update 表c 表c.1=...,表c.2=... 
这两个update中间该怎么写才能同时执行?

解决方案 »

  1.   

    UPDATE tb_Stock  SET StockNum = (SELECT tb_Stock.StockNum+INSERTED.ReGoodsNum) 
    ,NeedPay=(SELECT tb_Stock.NeedPay+(INSERTED.ReGoodsNum*tb_Stock.GoodsPrice))
    ,HasPay=(SELECT tb_Stock.HasPay+(INSERTED.ReGoodsNum*tb_Stock.GoodsPrice))
    FROM INSERTEDUPDATE tb_Sell SET GoodsNum=(SELECT tb_sell.GoodsNum-INSERTED.ReGoodsNum) 
    ,HasPay=(SELECT tb_Sell.HasPay-INSERTED.ReGoodsNum*INSERTED.ReGoodsPrice)
    ,NeedPay =(SELECT tb_Sell.NeedPay-INSERTED.ReGoodsNum*INSERTED.ReGoodsPrice)
    FROM INSERTED
    WHERE tb_Sell.GoodsID =(SELECT INSERTED.GoodsID FROM INSERTED) 
      

  2.   

    CREATE TRIGGER t_ReGoods ON dbo.tb_ReGoods 
    FOR INSERT,UPDATE
    AS 
    IF((SELECT INSERTED.ReGoodsSort FROM INSERTED)  = 1 )
    BEGIN
    UPDATE tb_Stock  SET StockNum = (SELECT tb_Stock.StockNum+INSERTED.ReGoodsNum) 
    ,NeedPay=(SELECT tb_Stock.NeedPay+(INSERTED.ReGoodsNum*tb_Stock.GoodsPrice))
    ,HasPay=(SELECT tb_Stock.HasPay+(INSERTED.ReGoodsNum*tb_Stock.GoodsPrice))
    FROM INSERTEDUPDATE tb_Sell SET GoodsNum=(SELECT tb_sell.GoodsNum-INSERTED.ReGoodsNum) 
    ,HasPay=(SELECT tb_Sell.HasPay-INSERTED.ReGoodsNum*INSERTED.ReGoodsPrice)
    ,NeedPay =(SELECT tb_Sell.NeedPay-INSERTED.ReGoodsNum*INSERTED.ReGoodsPrice)
    FROM INSERTED
    WHERE tb_Sell.GoodsID =(SELECT INSERTED.GoodsID FROM INSERTED) 
    END
    IF((SELECT INSERTED.ReGoodsSort FROM INSERTED)  = 0 )
    BEGIN
    UPDATE tb_Stock  SET StockNum=(SELECT tb_Stock.StockNum-INSERTED.ReGoodsNum)
    ,NeedPay=(SELECT tb_Stock.NeedPay-INSERTED.NeedPay)
    ,HasPay=(SELECT tb_Stock.HasPay-INSERTED.HasPay)
    FROM Inserted
    WHERE tb_Stock.GoodsID = (SELECT INSERTED.GoodsID FROM INSERTED)  
    END两个UPDATE怎么写?下面的那个ReGoodsSort=0时执行没有问题
    可是等于1的时候执行时C#提示:子查询返回的值多于一个。当子查询跟随在=、!=、<、<=、>、>=之后,
    或子查询用作表达式时,这种情况是不允许的。