slq server中怎样用update语句只更新当前行?

来源:百度知道 编辑:UC知道 时间:2024/06/20 17:07:28
现在数据库里有一张商品信息的表 有一个触发器 作用是当商品的原价或现价发生变化时折扣率也能对应自动变化 但我不明白 这样写 是不是当一条记录的原价或现价发生变化的时候 触发器会把整张表都update一遍?这样很费时间 有没有办法只在当前行执行update?语句如何写?谢谢!
CREATE TRIGGER setdiscount ON dbo.PE_Product FOR UPDATE
AS
UPDATE dbo.PE_Product set Discount=Price/Price_Original*100

刚才好像给你回答过了,我再具体说清楚点吧!你如果想实现插入删除和更新都自动是自动C=A+B,就要写出三个触发器,如下:
更新:
Create Trigger Tri_Update On ABC For Update
as
Begin
Declare @A varchar(20)
Declare @B varchar(20)
Declare @C varchar(20)
select @C=A+B,@a=A,@B=B from Inserted
Update ABC Set C=@C where A=@A and B=@B
End
插入
Create Trigger Tri_insert On ABC For Insert
as
Begin
Declare @A varchar(20)
Declare @B varchar(20)
Declare @C varchar(20)
select @C=A+B,@a=A,@B=B from Inserted
Update ABC Set C=@C where A=@A and B=@B
End
删除
Create Trigger Tri_delete On ABC For delete
as
Begin
Declare @A varchar(20)
Declare @B varchar(20)
Declare @C varchar(20)
select @C=A+B,@a=A,@B=B from Deleted
Update ABC Set C=@C where A=@A and B=@B
End
你看行不行,我已经测试过了可以

CREATE TRIGGER setdiscount ON dbo.PE_Product FOR UPDATE
as
declare @id int
select @id=id from updated
UPDATE dbo.