我要做的是创建一个存储过程UpdatePrice
,该过程具有两个参数(@PartId, @Price)
,并检查给定的价格是否等于当前价格,如果不相等,则什么也没有发生。
如果不同,则将新行插入称为PriceHistory
的表中,详细说明这些更改。我遇到的问题是检查等效性。
我的意思是说
begin transaction PriceUpdate
if @Price = Price
begin
--
end
else begin
insert into PriceHistory(@PartId, ChangeDate, PreviousPrice, NewPrice)
select @PartId, GetDate(), p.Price, @Price
from Part p
where PartID = @PartId
end
但是问题是Price
显然不是我可以放在那里的东西。那么我将如何获取给定PartId
的当前价格?
答案 0 :(得分:2)
您可以使用exists
语句检查记录是否存在预期的条件,例如对相同或不同的价格进行定价,然后执行条件代码。
begin tran
if exists (select 1 from dbo.Part where PartId = @PartId and coalesce(Price,0) <> coalesce(@Price,0)) begin
-- Further statements here for when price is equal
end else begin
-- Further statements here for when price is not equal
insert into PriceHistory(@PartId, ChangeDate, PreviousPrice, NewPrice)
select @PartId, GetDate(), p.Price, @Price
from Part p
where PartID = @PartId
end
commit