sql触发器更新后及更新前比较的问题(想了几天了)
各位SQL前辈,我现在有一个问题,表名,TEST 结构如下
名称 单价 数量
钢针 0.5 20
铁丝 12 30
毛绳 5 40
问题如下:
我想写一个触发器,触发过程为,当用户在修改这个表的记录时,如果修改后的数量和当前数据库表中记录的数量不一样,自动把数量还原为现在数据表中的数量,其它的字段正常更新,也就是说任何更新操作数量都不允许改变,但其它字段内容可以改变:如我用下面的的命令:
update test set 单价=1.5,数量=30 where 名称= '钢针 '
按照正常的逻辑,现在变的结果应该变为:
名称 单价 数量
钢针 1.5 30
铁丝 12 30
毛绳 5 40
我希望执行上面的命令后的结果为:
名称 单价 数量
钢针 1.5 20
铁丝 12 30
毛绳 5 40
但我希望只改变单价,钢针的数量不变,只有SA用户操作时,数量才可以改变,而且必须在触发器里面来实现,请问坛子里面的高人,这个触发器的代码应该如何来写!解决后必有重谢!!
------解决方案--------------------更改下:
alter trigger tu_TEST on TEST
for update
as
begin
update test
set 单价=i.单价,
数量=case when suser_sname()= 'sa ' then i.数量 else d.数量 end
from test,inserted i,deleted d
where test.名称=i.名称 and i.名称=d.名称
end