Q&A

  • MySQL Lock관련 질문인데요....
몇일째 이 문제때문에 고생하고 있네요...

폰으로 폰피에 접속하여 테이블의 특정 레코드를

먼저 잡아가는 루틴인데,

가끔씩 여러사람이 특정레코드를 같이 잡네요.

(한 사람이 잡으면 다른 사람은 못잡아야 하는데...)

** DB는 Mysql 4.0.20 MyIsam

** 폰피는 delphi6 CGI, ISAPI

** WAP 및 어플환경은 2003서버, DB는 Linux, 동시 접속수는 약 400명정도...

** 소스는 아래...

      if active then close;
      sql.text := ' Lock Tables migyul write ';
      execsql;
      // 다른 사람이 잡아갔는가 체크;
      sql.text := ' select count(gstl) aaa from migyul where cnt=:imct and flag=:ckfl ';
      parambyname('imct').asstring := cnt;
      parambyname('ckfl').asstring := 'J';
      open;
      // 잡아 갔으면 미결로 다시 돌아가기;
      if fieldbyname('aaa').asinteger > 0 then begin
         close;
         sql.text := ' UnLock Tables ';
         execsql;
         close;
         wml := wmljh;
         wml := StringReplace(wml,'#str_jh#',
           format('<a href="%s/scripts/w.exe/main?ttt=%s"> 미결</a>',
                   [wwwroot,gt1]),[rfReplaceall]);
         Response.content := wml;
         exit;
      end;
      close;
      // 미결이면 현 접속자로 접수;
      sql.text := ' update migyul set gstl=:imgs, flag=:imfl where cnt=:imct and flag=:ckfl ';
      parambyname('imct').asstring := cnt;
      parambyname('imgs').asstring := gt1;
      parambyname('imfl').asstring := 'J';
      parambyname('ckfl').asstring := 'N';
      execsql;
      close;
      sql.text := ' UnLock Tables ';
      execsql;
      close;

Test해본봐로는 Lock이 걸리긴 하는데...

한 레코드를 두명이 폰으로 동시에 잡아가네요...

뭐가 문제인지 모르겠네요.......
0  COMMENTS