日期:2014-05-17  浏览次数:20519 次

求一个自动带出单价和金额的触发器
如下图,批号字段里面=后面的数字是我需要自动更新的单价,=后面的长度不固定,希望写个触发器能自动带出单价和触发器,希望大家帮帮忙

存货编码    数量    单价   金额     批号
001         10                  001=10
002         10                  002=10.5
触发器,自动带出单价和金额

------解决方案--------------------
after update
as
begin
update a 
set price=left(b.批号,CHARINDEX('=',b.批号)-1),
amount=SUBSTRING(b.批号,CHARINDEX('=',b.批号)+1,LEN(b.批号)-CHARINDEX('=',b.批号))
from tb a
inner join deleted b on a.id=b.id


end
------解决方案--------------------

create table qs
(存货编码 varchar(10), 数量 int, 单价 decimal(8,2), 金额 decimal(8,2), 批号 varchar(16))


-- 建触发器
create trigger tr_qs on qs
after insert
as
begin
 update a
   set a.单价=cast(substring(a.批号,charindex('=',a.批号,1)+1,16) as decimal(8,2)),
       a.金额=cast(substring(a.批号,charindex('=',a.批号,1)+1,16) as decimal(8,2))*a.数量
   from qs a
   inner join inserted b 
   on a.存货编码=b.存货编码 and a.数量=b.数量 and a.批号=b.批号
end


-- 测试插入记录
insert into qs(存货编码,数量,批号)
 select '001', 10, '001=10' union all
 select '002', 10, '002=10.5'
 
 
-- 结果
select * from qs

/*
存货编码       数量          单价                                      金额                                      批号