首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

自动带出单价和金额的触发器

2013-07-24 
求一个自动带出单价和金额的触发器如下图,批号字段里面后面的数字是我需要自动更新的单价,后面的长度不

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

存货编码    数量    单价   金额     批号
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

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


---------- ----------- --------------------------------------- --------------------------------------- ----------------
001        10          10.00                                   100.00                                  001=10
002        10          10.50                                   105.00                                  002=10.5

(2 row(s) affected)
*/

热点排行