谁能帮我看下这个触发器

来源:百度知道 编辑:UC知道 时间:2024/06/18 08:30:37
CREATE TRIGGER t_ReGoods ON dbo.tb_ReGoods
FOR INSERT,UPDATE
AS
IF((SELECT INSERTED.ReGoodsSort FROM INSERTED) = 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 INSERTED
WHERE tb_Stock.GoodsID in (SELECT INSERTED.GoodsID FROM INSERTED)

UPDATE 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 in (SELECT INSERTED.GoodsID FROM INSERTED)
就是插入一个值,要同时更改两个表的内容,c#提示:值不唯一,插入失败,可是我数据库里的值是唯一的,不过where条件不是主键,
问题是这两个UPDATE中间该怎么写?才能正确执行?

for insert和for update建议做两个触发器,同时启用
CREATE TRIGGER t_ReGoods ON dbo.tb_ReGoods
FOR INSERT,UPDATE
AS
IF((SELECT INSERTED.ReGoodsSort FROM INSERTED) = 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 INSERTED
WHERE tb_Stock.GoodsID in (SELECT INSERTED.GoodsID FROM INSERTED)

CREATE TRIGGER t_ReGoods2 ON dbo.tb_ReGoods
FOR UPDATE
AS
UPDATE 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 in (SELECT INSERTED.GoodsID FROM INSERTED)