create trigger InserSUBMIT
on contactbak
for insertasbeginset nocount on;--定义变量
declare @File_Path VARCHAR(300)
declare @NeiRong VARCHAR(600)
--declare @in_time VARCHAR(600)
declare @Motel VARCHAR(15)
declare @sumContact int
declare @sumContactbak int
declare @sunOk int
declare @sumFail int--当进入一条记录是取得该记录的File_Path 
select  @File_Path=inserted.[File_Path] from inserted
--根据File_Path查找contact表是否也存在包含File_Path 的记录
set @sumContact=(select count(*) from contact where File_Path =@File_Path)if @sumContact=0 --还有记录在呼叫或者正在接听begin 
   set @sumContactbak=(  select count(*) from contactbak where File_Path=@File_Path)--总发送数量
   set @sunOk =(select count(*) from contactbak where File_Path=@File_Path and status=1 )--成功总数
   set @sumFail=(select count(*) from contactbak where File_Path=@File_Path and status <>1 )--失败总数
   set @Motel=(select distinct u.motel from URPUser u inner join contactbak c on u.ID=c.UserID and c.File_Path=@File_Path )--发送者的手机号码
   set @NeiRong='尊敬的客户,您于'+rtrim(getdate())+'成功发送'+rtrim(@sumContactbak)+'条语音信息,其中接听成功'+rtrim(@sunOk)+'条,失败'+rtrim(@sumFail)+'条。'--发送短信的内容
      
----------把相关字段的值填到待发送表,主要是填写 手机号码和发送内容,其他字段根据CMPP文档标准写死
insert into CMPP_SUBMIT(Dest_terminal_Id,Msg_Content,Registered_Delivery,Msg_level,Service_Id,Fee_UserType,Fee_terminal_Id,Msg_Fmt,Msg_src,FeeType,FeeCode,In_Time,Src_Id)
                 values(@Motel,@NeiRong,1,0,'466608',3,@Motel,15,1,'01','000000',getdate(),'10657072')
end--else结束if @sumFail>0 --如果存在失败的记录那么就循环的把每一条取出来(这里会新建一张临时表来保存符合条件的记录,以便取出相应的手机号码)
begin      declare @FailRecord table /*定义临时表变量 用于遍历订手机号码,时间*/
      (
phone varchar(50),
     in_Time varchar(50),
flagID TINYINT/*flagID计数器,然后去循环这个记录集,每循环一次,就把对应的flagID的值改成1,然后再根据循环来查找满足条件等于0的情况,每循环一次,处理的记录集就会少一次,达到快速遍历,此种方式比游标 遍历效率高很多*/      )
declare  @totalcount int
        declare  @rownum int
declare @content varchar(600) insert  into @FailRecord  select phone,in_time,0 from contactbak where File_Path=@File_Path and status<>1 set @content=(select voice_content from voice_File where File_Path=@File_Path) set  @totalcount = @@ROWCOUNT/*设置循环总数*/
        set @rownum = 1 /*设置循环起始值*/ /*循环*/        while @rownum <=@totalcount         begin             declare @phone varchar(15)
     declare @in_Time varchar(50)
     
             select top 1 @phone=phone,@in_Time=in_Time from @FailRecord where flagID=0
     set @NeiRong='尊敬的客户'+@phone+',您于'+@in_Time+'接收到来自'+@Motel+'的语音信息,信息内容为:'+@content+' '             /*把相关字段的值填到待发送表,主要是填写 手机号码和发送内容,其他字段根据CMPP文档标准写死*/
     insert into CMPP_SUBMIT(Dest_terminal_Id,Msg_Content,Registered_Delivery,Msg_level,Service_Id,Fee_UserType,Fee_terminal_Id,Msg_Fmt,Msg_src,FeeType,FeeCode,In_Time,Src_Id)
             values(@phone,@NeiRong,1,0,'466608',3,@phone,15,1,'01','000000',getdate(),'10657072')

              update @FailRecord set flagID=1 where phone=@phone              set @rownum = @rownum + 1         EndEnd
End
insert into contactbak values(123,13489022055,'3',39,'2010-09-01',53)select * from contactbakselect * from cmpp_submitdelete from cmpp_submit
select distinct u.motel from URPUser u inner join contactbak c on u.ID=c.UserID and c.File_Path='D:/YXT/Web/VoiceFiles/2010-05-27-114458.wav'手动测试在数据库中插入语句时触发器可以执行,
但是在程序执行中没有反应