表A
序号 姓名 级别 比例 消费
1 a 1 0.05 100
2 b 2 0.03 500
3 c 3 null 600表B
序号 姓名 积分
1 a 100*0.05=5
2 b 500*0.03=3
3 c 0 怎样更新 表B. 积分 (按级别提积分更新)
序号 姓名 级别 比例 消费
1 a 1 0.05 100
2 b 2 0.03 500
3 c 3 null 600表B
序号 姓名 积分
1 a 100*0.05=5
2 b 500*0.03=3
3 c 0 怎样更新 表B. 积分 (按级别提积分更新)
ON 表A
FOR update
AS
IF UPDATE(消费)
update 表B set 积分=insertd.比例*insertd.消费 from 表B,insertd where 表B.姓名=insertd.姓名
go
ON 表A
FOR update
AS
IF UPDATE(消费) or UPDATE(比例)
update 表B set 积分=i.比例*i.消费
from 表B,insertd i
where 表B.姓名=i.姓名 --表B.序号=i.序号go
序号 姓名 级别 比例 消费
1 a 1 0.05 100
2 b 2 0.03 500
3 c 3 null 600
4 a 1 0.05 200
对不起表A有重复记录,请全点写下好吗!
序号 姓名 积分
1 a 300*0.05=5
2 b 500*0.03=3
3 c 0
序号 姓名 积分
1 a 300*0.05=15
2 b 500*0.03=3
3 c 0
CREATE TRIGGER my_trig
ON 表A
FOR insert
AS
update 表B
set 积分=t.l
from 表B inner join
(select 序号,sum( (case 比例 when NULL then 0 esle 比例 end) * 销费) as l
from inserted
group by 序号) as t
on 表B.序号=t.序号 gogo
ON 表A
FOR update
AS
IF UPDATE(消费) or UPDATE(比例)
update 表B set 积分=i.比例*i.消费
from 表B,insertd i
where 表B.序号=i.序号 --表B.姓名=i.姓名go
ON A
FOR insert
AS
update B
set 积分=t.l
from B inner join
(select 姓名,sum( (case 比例 when NULL then 0 else 比例 end) * 消费) as l
from inserted
group by 姓名) as t
on B.姓名=t.姓名
go
UPDATE b set 积分 = a.积分
FROM tableB b
INNER JOIN (select 姓名,isnull(sum(比例*消费),0) as 积分 from tableA group by 姓名) a
ON b.姓名 = a.姓名
Set 积分 = A.消费 * Isnull(A.比例,0)
From B , A
Where A.Id = B.Id
And B.姓名 = 姓名
ON 表A
FOR update
AS
IF UPDATE(消费) or UPDATE(比例)
update 表B set 积分=i.比例*i.消费
from 表B,insertd i
where 表B.姓名=i.姓名 --表B.序号=i.序号go
create trigger trg_insert on tableA
for insert
as
UPDATE b set 积分 = 积分 + a.积分
FROM tableB b
INNER JOIN
(
select 姓名,isnull(sum(比例*消费),0) as 积分
from tableA x inner join inserted i on x.姓名 = i.姓名 group by 姓名
) a ON b.姓名 = a.姓名
GO----更新时
create trigger trg_insert on tableA
for update
as
UPDATE b set 积分 = 积分 + a.积分
FROM tableB b
INNER JOIN
(
select i.姓名,isnull(sum(i.比例*i.消费),0) - isnull(sum(d.比例*d.消费),0) as 积分
from deleted d inner join inserted i on d.姓名 = i.姓名 group by i.姓名
) a ON b.姓名 = a.姓名
GO
----插入时
create trigger trg_insert on tableA
for insert
as
UPDATE b set 积分 = 积分 + a.积分
FROM tableB b
INNER JOIN
(
select 姓名,isnull(sum(比例*消费),0) as 积分
from inserted group by 姓名
) a ON b.姓名 = a.姓名
GO