本帖最后由 boombacn 于 2009-06-28 15:23:04 编辑

解决方案 »

  1.   

    另外,系统本身在insert into tc_mail_info 之后,也会做一个insert into rel_mail_owner的操作,跟我这个触发器的操作基本相同,会有影响吗?
    ------------
    可能是程序在执行时,条件不满足,所以触发器后面的语句没执行。
    你手工在查询分析器中执行语句时,尽量模拟跟系统本身执行的语句一样。
      

  2.   


    是不是系统运行时几个insert都一起执行来模拟?我前面模拟的都是只执行第一个insert
      

  3.   

    触发器已经执行了还要再执行insert做什么呀
      

  4.   

    你的触发器什么意思?
    满足第一个条件的话,两条insert语句都执行?
    不满足第一个条件的话,只执行第二条INSERT语句,是这样吗?
      

  5.   

    你的上一个帖子说的:
    我又看了一下跟踪,系统本身在insert into tc_mail_info 之后,也会做一个insert into rel_mail_owner的操作,我那个跟这个似乎有些重复,会有影响吗?触发器里面的INSERT语句不会被跟踪出来,那就是说你的记录插入重复了。
      

  6.   

    终于等到你了庄稼老大,大家帮我看看是不是这个原因,
    原来系统运行insert into tc_mail_info 之后 马上跟了一个 delete from rel_mail_owner where mail_id = 刚刚插入tc_mail_info_id的那个mail_id。我估计我另外加的这个触发器在delete之前执行了,所以被系统的delete给delete掉了
      

  7.   

    可不是嘛,被你那个delete from rel_mail_owner where mail_id = 刚刚插入tc_mail_info_id的给删掉了。
      

  8.   

    你加delete from rel_mail_owner where mail_id = 刚刚插入tc_mail_info_id干什么用?
    是不是想先清空再插入啊?
    那就应该把这句放到insert tc_mail_info 前面。
      

  9.   

    sdhdy请教下,一个表上定义多个触发器,它们执行的先后顺序怎么定?
      

  10.   

    个人认为:触发器的执行顺序一般是按照建立的顺序来执行的,不过可以指定顺序。可用 sp_settriggerorder 指定表上第一个和最后一个执行的 AFTER 触发器。在表上只能为每个 INSERT、UPDATE 和 DELETE 操作指定一个第一个执行和一个最后一个执行的 AFTER 触发器。如果同一表上还有其它 AFTER 触发器,则这些触发器将以随机顺序执行。如果 ALTER TRIGGER 语句更改了第一个或最后一个触发器,则将除去已修改触发器上设置的第一个或最后一个特性,而且必须用 sp_settriggerorder 重置排序值。