sqlserver觸發器引起的死鎖問題


使用一個觸發器,只是添加時才觸發,目的為了限制ip三分鍾發送一條短信,這個表某一段時間內訪問頻率非常之高,今天高峰時出現了死鎖的情況

可能是因為沒有判斷用戶的原因,現在加上用戶判斷再觀察一下,代碼大概如下:

ALTER  trigger  [ dbo ]. [ trg_drv_yzm_insert ]  on  [ dbo ]. [ drv_yzm ]  for  insert
as
begin
     if ( CURRENT_USER = ' testuser ')
     begin
         declare  @lastcreatet  varchar( 50)
         declare  @lastdate  datetime
         declare  @id  int, @clientip  varchar( 15), @type  varchar( 20)
        
         select  @id =id, @clientip =clientip, @type =type  from inserted;
         select  top  1  @lastcreatet =createt  from drv_yzm  where clientip = @clientip  and type = ' pre '  and id <> @id  order  by createt  desc

         set  @lastdate  =  convert( datetime, substring( left( @lastcreatet, 8) + '   '  +  substring( @lastcreatet, 9, 2) + ' : '  +  substring( @lastcreatet, 11, 2) + ' : '  +  substring( @lastcreatet, 13, 2), 1, 17))
         set  @lastdate  =  dateadd(mi, 3, @lastdate)
        
         if( @lastdate > GETDATE()  and  @type = ' pre ')
             update drv_yzm  set status = ' 0 '  where id = @id
     end
end


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM