如何创建我们创建触发器的更新表的获取主键?

时间:2017-06-04 18:06:14

标签: sql triggers database-trigger

我有一个Product表和一个ProductPriceLog表来维护产品的价格。 假设产品表有3个字段[ProductId, ProductName, ProductPrice],价格历史记录只有2个字段[ProductId(fk), productprice]

我正在尝试编写一个触发器,每当我们更新产品价格时都会添加一个日志条目。

CREATE TRIGGER price_change_trg
ON PRODUCT
AFTER INSERT OR UPDATE OF ProductPrice ON PRODUCT
BEGIN

     INSERT INTO ProductPriceLog ( @idd , ProductPrice)
END;

具体来说,如何从Product表的行中获取更新后的productId?

2 个答案:

答案 0 :(得分:0)

您可以参考我的解决方案。希望能帮到我的朋友。

CREATE TRIGGER price_change_trg
ON PRODUCT
AFTER INSERT, UPDATE
AS
BEGIN
declare @productId int;
declare @ProductPrice decimal(10,2);
select @productId = i.ProductId from inserted i;
select @ProductPrice = i.ProductPrice from inserted i;  
     INSERT INTO ProductPriceLog VALUES ( @productId  , @ProductPrice )
END;

答案 1 :(得分:-1)

如果我理解了您的问题,您必须使用插入表,其中包含刚刚插入产品表select @idd=productid from inserted

的数据