2017-02-08 1 views
0

데이터가 DB에 저장되는 동안 사용자가 페이지 또는 브라우저를 닫으면 mysql 테이블의 잠금을 해제하는 방법? 아래에 주어진 것은 제가 시도하고있는 것입니다.프로세스를 완료하기 전에 사용자가 종료하면 mysql에서 테이블 잠금을 해제하는 방법은 무엇입니까?

//to lock table 
mysql_query("LOCK TABLES wo_booking WRITE"); 

//insert query 
$pass_add=$objA->insert_fields(TABLEPREFIX.'booking',$fields,$values); 

//to unlock table after write 
mysql_query("UNLOCK TABLES"); 

테이블이 잠기지 않으면 다음 사용자 데이터가 어떻게 저장 될 수 있습니까?

+3

을 왜 자신을 테이블을 잠그는, 당신이 당신의 엔진으로 이노을 사용하지 않는? 이 [link] (https://dev.mysql.com/doc/refman/5.6/en/mysql-acid.html) –

+0

을 참조하십시오. 테이블 레벨 잠금 myisam을 사용하려면 행 수준에서 innodb를 사용하십시오. – frz3993

+0

클라이언트 세션의 연결이 끊어진 경우 해제됩니다. – frz3993

답변

1

잠금을 보유한 세션이 만료되면 테이블이 자동으로 잠금 해제됩니다. 그래서 더 나은 거래를 사용하고 그 만료, insertinnodb와 쿼리를 해야하는지 잘 모르겠지만!

innodb_lock_wait_timeout을 최적의 값으로 설정할 수 있습니다. MySQL의 참조 설명서에서 언급 한 바와 같이

set innodb_lock_wait_timeout = 88 

: https://dev.mysql.com/doc/refman/5.7/en/lock-tables.html

  • 세션이 UNLOCK 테이블이 명시 적으로 잠금을 해제 할 수 있습니다.

  • 세션이 이미 잠금을 보유하고있는 동안 잠금을 획득하기 위해 LOCK TABLES 문을 실행하는 경우 기존 잠금은 새 잠금이 부여되기 전에 암시 적으로 해제됩니다.

  • 세션이 트랜잭션 (예 : START TRANSACTION)을 시작하면 암시 적 UNLOCK TABLES가 수행되어 기존 잠금이 해제됩니다. (테이블 잠금 및 거래 사이의 상호 작용에 대한 자세한 내용은 섹션 14.3.5.1, “Interaction of Table Locking and Transactions”를 참조하십시오.)

+0

답장을 보내 주셔서 감사합니다 – Amiyar

+0

질문을 올리십시오 – Amiyar

관련 문제