我有三张表:
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
该怎么写啊,没学过触发器,但现在要用。

解决方案 »

  1.   

    if exists(select * from SysObjects where name='trg_MyTry')
      drop trigger trg_MyTry
    go
    create trigger trg_MyTry
    .............
    我我承认我没有懂到你的意思~
      

  2.   

    c1=a1*b1 条件是什么?T1表的哪一行*T2表的哪一行?连这个都不说清楚
      

  3.   

    create trigger (name)
    on t1,t2,t3
    after update
    as
    @c1=a1*b1 , @c2=a2*b2, @c3=a3*b3 @c4=a4*b4,
    @c5=c1+c2+c3+c4
      

  4.   

    @c1=@a1*@b1 , @c2=@a2*@b2, @c3=@a3*@b3 @c4=@a4*@b4,
    @c5=@c1+@c2+@c3+@c4
      

  5.   

    比方说我表中的数据是这样的:
    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里的数据自动更改,这需要写个触发器,但是现在我还没学过所以想请高手帮个忙,不知这次说明白了没有?
      

  6.   

    你的T1、T2、T3是怎么关联的呀!
      

  7.   


    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表....
      

  8.   

    楼主还是没说清楚t1表所有行都受t2表影响吗
    比如t1输入第1行时,t2表b1 是1,t1输入第2行时,t2表b1 是2了咋办?第1行要重算吗?如果 是的话我觉得没必要用触发器了,你查询的时候把T1和T2运算下就可以了,效率高