哎,难。create trigger i_t on t for insert as
 select object_name(parent_obj) 
 from sysobjects
 where id = @@procid
go

解决方案 »

  1.   

    能否建一张表叫记录变化表,来记录表TAB记录的变化
    B.或那个表级联修改和删除了.
    ---------------
    在那个表绑一个触发器,在修改和删除时候判断TAB有没有相应的数据,
    有的话就写记录变化表。
    C.还是前台语句直接修改删除了.
    -----------
    前台语句修改删除的同时写记录变化表!.最后可以对记录变化表做一些有用的统计!
      

  2.   


    引用楼主:
    (这个问题我的解决是在其它表的触发器做更新操作时,对一列加入表名或表ID,不知你有没有更好办法?)
    ---------------------------------------------------------------------------------
    不好意思 我想能不能这样:可能要求在TAB表中加上一列,在其它表的触发器做更新操作时,记下的新增或者修改的属性值;
    对于删除则可以建立一个TAB_DELLOG信息表记录所删除的记录,以及操作表标记。
    对于级联级删除,则一样考虑 。
    前台SQL则更好处理了。
      

  3.   

    解决办法:在数据库中增加一个表: 操作表:
    id  操作者  操作类型--前台操作时,向操作表中写入
    --触发器触发的操作,也向操作表中写入相关内容
    --关联操作时,也向操作表写相关的内容一个公共表TAB:
    公共表的触发器通过判断操作表来确定是谁触发的.
      

  4.   

    上面的少写了一点.一个公共表TAB:
    公共表的触发器通过判断操作表来确定是谁触发的.
    处理完成后,清空操作表的内容.防止冲突
      

  5.   

    我想也是用日志表式的表,专门记录tab的改变。
      

  6.   

    to: letsflytogether
      "级联操作可以通过触发器来替代"
     --这个不用你说,大家也都知道.但级联操作比触发器效率要高得多."如果有工夫写程序记录所有操作,还不如把级联操作全部用触发器来实现"
    --这不是有工夫和没工夫的问题,这是数据库维护经常碰到的事.
    --有时不能随便修改人家的数据库结构和流程.这也是一种无耐.最后,这个跟"钻牛角尖"没什么关系吧,你若对此问题没兴趣,可以不回答.
    大家来此的目的都是学习和交流,我想你没必要在此冷嘲热讽吧.
      

  7.   

    to:j9988(j9988) 
    其实您肯定误解了我的意思,也可能是我词不达意。
    我主要还是提出一种你可能以为很幼稚的方案,
    至于对于一个问题的态度,有的人喜欢打破沙锅问到底,有的人喜欢找点窍门,
    这只是个人的性格和思维不同而已,绝没有褒此贬彼,更不是冷嘲热讽。
    也可以这么说,大凡杰出成就,都是一些人钻牛角尖钻出来的。今天才知道昨天是您生日,生日快乐!
      

  8.   

    to: letsflytogether
         谢谢你祝福!
         不好意思,我发完那贴就后悔了.我确实误解了.当时心情不好,很恼火,确实对不起!
    我一般不在这儿表露自已和情绪.但昨天....哎,不说了,对不起!
      

  9.   

    仔细看了J9988的问题:很难!!
    我想可以试试这样处理:
    通过一个TASK_LOG表来记录前台的操作和TRIGGR的操作,比如:TABLE_TEST 中有一列TASKLOG_ID,TASKLOG_TYP(1--表示有前台的APP更新;2--表示有TRIGGER来更新;0--表示其他操作)。TASKLOG_TYP 默认值为0.TASK_LOG表(TASKLOG_ID,TASK_LOG,...)
      

  10.   

    还有一个方法就是直接分析TRANSACTION LOG。