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)
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#提示:子查询返回的值多于一个。当子查询跟随在=、!=、<、<=、>、>=之后, 或子查询用作表达式时,这种情况是不允许的。
,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)
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#提示:子查询返回的值多于一个。当子查询跟随在=、!=、<、<=、>、>=之后,
或子查询用作表达式时,这种情况是不允许的。