使用一個觸發器,只是添加時才觸發,目的為了限制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
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
