문제

MySQLI를 사용하여 PHP에서 트랜잭션의 격리 수준을 PHP에서 어떻게 설정합니까? 나는 어디에서나 보았고 그것에 대한 정보를 찾을 수 없습니다.

여기 격리 수준에 대한 설명입니다.

도움이 되었습니까?

해결책

진술을 실행하기 전에 쿼리에서 격리 레벨을 설정할 수 있습니다. 이것은 동일한 세션을 사용하여 모든 것을 수행한다고 가정합니다.

$mysqli = new mysqli('localhost', 'user', 'pass', 'db');
$mysqli->query("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE");
...

당신은 또한 끄고 싶을 수도 있습니다 자동 커밋 길을 바꾸기 때문에 손에 직렬화 가능한 분리가 작동합니다.

다른 팁

짧은 대답:

$mysqli = new mysqli('localhost', 'user', 'pass', 'db');
$mysqli->query("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE");

긴 대답 : 사용하지 않는 한 세션 또는 글로벌 수정 자, 트랜잭션 수준 설정은 다음 쿼리에만 적용됩니다.

tldr;

MySQL에 따르면 선적 서류 비치 InnoDB 테이블 :

세션이나 글로벌 키워드없이 :

이 명령문은 세션 내에서 수행되는 다음 단일 트랜잭션에만 적용됩니다.

후속 트랜잭션은 지명 된 특성의 세션 값을 사용하여 되돌립니다.

진술은 거래 내에서 허용되지 않습니다

설정하십시오 GLOBAL 깃발은 모두에게 영향을 미칩니다 후속 쿼리 기존 세션은 영향을받지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top