help help help
waiting ... ...
waiting ... ...
waiting ... ...
help help help

解决方案 »

  1.   

    用 View, 不要用 Trigger
      

  2.   

    create triger tg_A on A
    instead of insert
    as
    insert A (f1,f2) 
    select a.f1*(select top 1 f1val from B where B.f1=a.f1) as f1,
           a.f2*(select top 1 f2val from B where B.f2=a.f2) as f2
      from inserted a
      

  3.   

    可以实现的。而且不用view也不用trigger.
    在设计(右键点击表,选设计表)f3时,用公式计算。
    如果f1val 和f2val 可定下,那就在f3的公式处直接写就好了,如果不行,只好将f1和f2作为参数传给一个函数,然后由那个函数返回一个值给f3就行了。
    当然只在sql server2000里可以用自定义函数了。
      

  4.   

    以下没有经过验证:
    在trigger中
    (1)declare 一个变量a;用来存f1*f1val+f2*f2val;
    (2)if not COLUMNS_UPDATED(f3) then/*如果插入了f3,就不执行*/
          begin
            a:=inserted.f1*faval+inserted.f2*f2val;
            /*可能要通过select 语句来取出inserted.f1,inserted.f2,inserted 表示刚插入的记录*/
            update f3=3 where f1=inserted.f1;(如果f1是关键字的话;用insert也行)
          
           end; 
     
     
      

  5.   

    补充:f1val,f2val的值可以在trigger中用select得到;
      

  6.   

    CREATE VIEW TT(F1,F2,F3) AS
    SELECT F1,F2,(SELECT SUM(FTYPE*FVAL) FROM A) FROM A;