求一个自动带出单价和金额的触发器
如下图,批号字段里面=后面的数字是我需要自动更新的单价,=后面的长度不固定,希望写个触发器能自动带出单价和触发器,希望大家帮帮忙
存货编码 数量 单价 金额 批号
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)
*/