一个基础表TableA,它被视图ViewA引用(且ViewA中不包含对其它表的引用),视图ViewA中写一插入触发器
当向基础表TableA中插入数据时,如何使得ViewA中的插入触发器触发?

解决方案 »

  1.   

    视图是基于表的,表数据变化后,视图自动也变化了
    create view viewname 
    as
    select * from tablenametablename的内容变化后,view的结果也就变了
      

  2.   

    CREATE   TRIGGER   名   on   视图 
    INSTEAD   OF   INSERT 
    AS 
    BEGIN 
        INSERT   INTO   表1 
                  SELECT   name1,name2 
                  FROM   inserted 
        INSERT   INTO   表2 
                  SELECT   name3,name4 
                  FROM   inserted END
      

  3.   

    CREATE TRIGGER trigger_name   ON { table | view } 
    视图可以加触发器,
    貌似指的是视图的结果数据增加时触发,插入也是插入到视图的相关表中。
      

  4.   


    --你可以直接在表上建触发器!当有插入,更新,删除时操作!
    create trigger tr_name on tb
    for insert,update,delete
      

  5.   

    不一样的:
    我的基表实际上有几十上百个,它们都是同一类表,用于记录各种各样的事件的,这些表是结构化的,用于记录详细信息,这些表是必须存在的。
    并且我还有一个总表,它是一个记录事件的总表,仅有描述性信息,它的描述是从事件基表中的关键列中取的值汇总的,同样是物理表,也是必须存在的。
    对于这样的情况,我有以下办法可以使用
    1.为这几十上百个表每一个都写插入、更新、删除触发器,以将信息同步到总表
    2.写一个使用Union的总表视图,对此视图写插入、更新、删除触发器,当基表更新时,这个视图上的触发器自动触发,将信息同步到总表方法2相对于方法1来说工作量小了很多,并且维护方便(当然前提是这种方法能够实现哈)
      

  6.   

    这个好像没办法用触发器来实现各总的吧!
    可以建立一个存储过程,弄个汇总的,做个JOB,设定一个执行间隔时间,看你实际中更新表的频率了。
      

  7.   

    *.*  ,我被人说思路很诡异好几次了,为什么总是我!Crying
      

  8.   

    既然能费尽心思去设计那几十上百个表(从上面的说法看,这些表貌似结构差不多,否则不能UNION),那对每一个表设计一个触发器,实现向总表写一个数据应该是很简单的事情.为什么不单独写呢?仅仅 Ctrl+C Ctrl+V 而已.