2010-01-12 8 views
2

데이터베이스 계층 개체에서 우리는 항상 mysqli :: query를 통해 실행되는 "START TRANSACTION", "ROLLBACK"및 "COMMIT"SQL 문을 사용하여 트랜잭션을 관리했습니다. 같은 JDBC로 MySQL 클라이언트 응용 프로그램 (작성에 사용PHP mysqli :: autocommit VS "START TRANSACTION"

중요

많은 API를 :

오늘 몇 가지 조사를하는, 나는 바로 SQL을 사용하여 VS 트랜잭션을 관리하기 위해 API 레벨을 호출 사용에 관한 this mention in the MySQL Manual 발견) 은 클라이언트에서 START TRANSACTION 문을 전송하는 대신 트랜잭션을 시작할 수있는 (그리고 때로는 이어야 함) 트랜잭션을 시작하는 고유 한 방법을 제공합니다. 자세한 내용은 20 장, 커넥터 및 API를 참조하거나 API 설명서를 참조하십시오.

그리고는 가까이 mysqli에서보고시에, mysqli :: 자동 커밋, mysqli :: 롤백과 mysqli가 : 트랜잭션 ( http://us.php.net/manual/en/class.mysqli.php)을 관리하는 방법을 커밋 발견했다.

내 질문 :이 mysqli 등가물을 사용하는 것이 더 낫습니까? 그 이유는 무엇입니까? 왜 이러한 기능이 SQL의 직접적인 기능보다 뛰어나거나 더 나은지에 대해서는 언급 할 곳이 없습니다.

답변

5

데이터 액세스 래퍼가 트랜잭션 시작/종료 시점을 알아야하는 이유가있을 수 있습니다. 예를 들어, 내 머리 꼭대기에서 연결 풀링 구성표는 이전에 사용 된 연결이 트랜잭션 도중에 끝났을 때이를 알아야하며,이 경우 재사용을 위해 연결 풀로 반환하지 않아야합니다.

나는 mysqli에서 SQL 버전이 아닌 네이티브 메소드를 사용해야한다는 것을 모르고 있지만 일반적인 경우 일 수 있습니다 ... 그것이 "때로는해야"하는 이유입니다. 어쨌든 PHP 메서드는 SQL 문자열 버전보다 읽기가 쉽기 때문에 어쨌든 그걸로 말할 것입니다.