php 트랜잭션 예제

By agosto 2, 2019Sem categoria

이제, 예를 들어, 우리가 USERTBL에 새 레코드 / 새 사용자를 삽입해야하고 그 후 우리는 테이블 EMAILTBL에 사용자의 이메일을 삽입 할 가정 해 봅시다. 첫 번째 삽입이 성공한 경우에만 두 번째 테이블에 삽입하려고 합니다. 또한 두 번째 삽입이 실패하면 트랜잭션을 종료하여 첫 번째 삽입이 실행 취소됩니다. 격리: ACID 모델의 격리 측면은 주로 InnoDB 트랜잭션, 특히 각 트랜잭션에 적용되는 격리 수준을 포함합니다. 관련 MySQL 기능에는 다음과 같은 기능이 포함됩니다: MySQL 지원 트랜잭션의 모든 저장소 엔진(예: MyISAM)이 트랜잭션을 지원하지 는 않지만 InnoDB는 해당 합니다. 이러한 문은 트랜잭션 사용에 대한 제어를 제공합니다 : 트랜잭션은 일반적으로 한 번에 적용 될 변경 일괄 처리를 “저장”하여 구현됩니다. 이것은 크게 그 업데이트의 효율성을 개선의 좋은 부작용이있다. 즉, 트랜잭션은 스크립트를 더 빠르고 강력하게 만들 수 있습니다(이러한 이점을 얻으려면 스크립트를 올바르게 사용해야 함). PDO를 사용하여 트랜잭션을 지원하는 데이터베이스에 대한 연결을 만들면 자동 커밋 모드가 설정됩니다. 즉, 발급하는 모든 쿼리가 암시적 트랜잭션 내에 래핑됩니다.

다음 샘플에서는 ID 번호가 23으로 할당된 새 직원에 대한 항목 집합을 만들고 있다고 가정해 보겠습니다. 그 사람의 기본 데이터를 입력하는 것 외에도 급여를 기록해야합니다. 두 개의 별도 업데이트를 만드는 것은 매우 간단하지만 PDO::beginTransaction() 및 PDO::commit() 호출 내에 연결하면 완료될 때까지 다른 누구도 이러한 변경 내용을 볼 수 없게 됩니다. 문제가 발생하면 catch 블록은 트랜잭션이 시작된 이후 수행된 모든 변경 내용을 롤백한 다음 오류 메시지를 인쇄합니다. 원자성: ACID 모델의 원자성 측면은 주로 InnoDB 트랜잭션을 포함합니다. 관련 MySQL 기능은 다음과 같습니다 : PDO는 드라이버 수준에서 트랜잭션 기능에 대한 검사.