The following procedure causes a deadlock when the user on the web page 
navigates rapidly through a javascript object on the web page.  Please give me 
some advice on how best to deal with this.  I've thought about changing it 
using DATEDIFF so they update only once a minute, but I would appreciate advice 
on if there is a better way to fix this 

 CREATE PROCEDURE uspValidateSession 
  ( 
    guid varchar(40)
    , newsessiontimeout int
   ) 
 RETURNS 
  ( 
     subscriberid int
     , testerid int
     , subscriberloginid int
   )
 AS 
 DECLARE VARIABLE sessionlogid int;
 DECLARE VARIABLE lastaccessed timestamp;
 DECLARE VARIABLE currenttimeout int;
 BEGIN
     SELECT b.SessionLogId, b.LastAccessed, b.CurrentSessionTimeout, 
COALESCE(a.SUBSCRIBERID, 0), COALESCE(a.TESTERID, 0), 
COALESCE(a.SUBSCRIBERLOGINID, 0)
     FROM tblLoginEvent a
     JOIN tblSessionLog b ON a.LOGINEVENTID = b.LOGINEVENTID
     WHERE a.EVENTGUID = :guid
     INTO :sessionlogid, :lastaccessed, :currenttimeout, :subscriberid, 
:testerid, :subscriberloginid;
     
     IF (DATEADD(:currenttimeout MINUTE TO :lastaccessed) >= current_timestamp) 
THEN 
     BEGIN 
         UPDATE tblSessionLog SET 
             LastAccessed = current_timestamp
             , CurrentSessionTimeOut = :newsessiontimeout
         WHERE SessionLogId = :sessionlogid;
     END
     ELSE 
     BEGIN 
         subscriberid = 0;
         testerid = 0;
         subscriberloginid = 0;
     END 
     
   SUSPEND;
 END^
 

 SET TERM ; ^
 

 COMMIT;


Reply via email to