我有三张表:
t1有四个字段:a1,a2,a3,a4;
t2有四个字段:b1,b2,b3,b4;
t3有五个字段:c1,c2,c3,c4,c5;
现在我想c1=a1*b1 ; c2=a2*b2; c3=a3*b3; c4=a4*b4;
c5=c1+c2+c3+c4
该怎么写啊,没学过触发器,但现在要用。
t1有四个字段:a1,a2,a3,a4;
t2有四个字段:b1,b2,b3,b4;
t3有五个字段:c1,c2,c3,c4,c5;
现在我想c1=a1*b1 ; c2=a2*b2; c3=a3*b3; c4=a4*b4;
c5=c1+c2+c3+c4
该怎么写啊,没学过触发器,但现在要用。
drop trigger trg_MyTry
go
create trigger trg_MyTry
.............
我我承认我没有懂到你的意思~
on t1,t2,t3
after update
as
@c1=a1*b1 , @c2=a2*b2, @c3=a3*b3 @c4=a4*b4,
@c5=c1+c2+c3+c4
@c5=@c1+@c2+@c3+@c4
t1表
a1 a2 a3 a4
50 60 58 90
89 90 80 86t2表(这个表里面放的数据是比例,只有这一行数据)
b1 b2 b3 b4
0.2 0.2 0.3 0.3
t3表
c1 c2 c3 c 4
然后想让c1=a1*b1 ; c2=a2*b2; c3=a3*b3; c4=a4*b4;
c5=c1+c2+c3+c4
不是check约束,当我表1和表2里 的数据更改的时候,表3里的数据自动更改,这需要写个触发器,但是现在我还没学过所以想请高手帮个忙,不知这次说明白了没有?
create trigger tr
on test1 for insert,update,delete
as
begin
--declare @temp table
--(
--c1 int,
--c2 int,
--c3 int,
--c4 int,
--c5 int
--)delete test3
insert into test3
select
t1.a1*t2.b1,
t1.a2*t2.b2,
t1.a3*t2.b3,
t1.a4*t2.b4,
t1.a1*t2.b1+t1.a2*t2.b2+t1.a3*t2.b3+t1.a4*t2.b4
from test1 as t1,test2 as t2---- 目标表
--MERGE test3 AS TARGET
---- 源表
--USING @temp AS SOURCE
---- 条件
--ON (TARGET.[DATE] = SOURCE.[DATE] and TARGET.[Period] = SOURCE.[Period] and TARGET.[EXCHID] = SOURCE.[EXCHID])---- 更新目标表
--WHEN MATCHED THEN
--UPDATE SET TARGET.PAGPCHCONG = SOURCE.PAGPCHCONG,TARGET.PAGETOOOLD = SOURCE.PAGETOOOLD
---- 插入源表数据
--WHEN NOT MATCHED BY TARGET THEN
--INSERT VALUES (SOURCE.[DATE],SOURCE.Period,SOURCE.exchid,SOURCE.PAGPCHCONG,SOURCE.PAGETOOOLD)
---- 删除目标表数据(在源表中没有)
--WHEN NOT MATCHED BY SOURCE THEN
--DELETE
end看一下有没有对你启发...实在没明白你的意图.~...建议加强描述
这个触发,是在test1表有数据插入,更新,删除的时候,触发....重新改写test3表....
比如t1输入第1行时,t2表b1 是1,t1输入第2行时,t2表b1 是2了咋办?第1行要重算吗?如果 是的话我觉得没必要用触发器了,你查询的时候把T1和T2运算下就可以了,效率高