2009-11-13 5 views
3

PHP의 mysqli 사용 방법 행 수준 잠금을 적용하려면 어떻게해야합니까?mySQL - mysqli를 사용하여 행 수준 잠금 적용

행 수준 잠금은 조건에 맞는 현재 행을 편집하는 모든 사람을 중지 시킵니 까? 사용자가 기준에 맞는 행을 삽입하는 것을 중단합니까? 당신이 달성하기 위해 노력하고 무엇

감사

답변

7

특정 행을 편집에서 잠 그려면 SELECT 쿼리 끝에 FOR UPDATE을 사용하십시오. 이렇게하면 트랜잭션의 행이 잠기고 다른 사용자가 트랜잭션을 업데이트 할 수 없게됩니다. 이것은 innodb와 같은 트랜잭션 스토리지 엔진에서만 작동합니다.

귀하의 질문에 대한 대답에서 행 수준 잠금 "귀하의 기준과 일치하는 현재 현재 행을 편집하는 사람을 중지하십시오". 더 구체적으로 말하면 (트랜잭션 내부에서) 행을 INSERT, UPDATE 또는 DELET하면 해당 행은 거래를 COMMIT 할 때까지 다른 사람이 편집 할 수 없도록 잠글 수 있습니다. FOR UPDATE을 사용하여 행을 선택하면 행도 잠 깁니다.

그러나 "사용자가 기준에 맞는 행을 삽입하는 것을 중지하지 않습니다".

+0

행 레벨 잠금은 InnoDB에서만 가능하며 MyISAM에서는 사용할 수 없다는 점을 강조해야합니다. –

+0

아, 방금 innodb 태그를 보았습니다. –

+0

IF 행이 잠겨 있으면 해당 행에서 데이터를 선택할 수 있습니까? 예를 들어 행이 잠겨 있다면'fetch_object()'로 데이터를 가져올 수 있습니까? – TarangP