--触发器的操作2
create trigger inserttableB
on tableA 
after insert
insert into tableB select * from inserted
go
create trigger updatetableB
on tableA 
after update
delete from tableB where id in (select id from deleted)
inert into tableB select * from inserted
go
create trigger deletetableB
on tableA 
after delete
delete from tableB where id in (select id from deleted)
go

解决方案 »

  1.   


    可以试试在作业开始时禁用触发器  alter table 表名 disable trigger all 作业最后后再开启触发器 alter table 表名 enable trigger all 
      

  2.   

    LZ,T这个时间字段的纪录时间是提交时间吗?可以考虑作业执行最后根据T字段删除上一次操作的作业,这样你保留的作业最多也是两个。
      

  3.   

    我现在建立的作业名称是根据A这个表自动增加的id来命名的,比如job+id这个方式,那么在for delete触发器中,删除了一条记录,根据id就可以删除相应的作业。如果根据提交时间来,那么这个提交时间就要关联作业,而且,万一存在以前提交时间的作业运行不成功而删除掉了,也有问题
      

  4.   

    已解决,修改一下系统存储过程master.sys.sp_Msget_jobstate,让它返回一个作业的状态,然后让触发器检测状态,如果是1(正在运行)就不删除作业