CI 묻고 답하기

제목 트랜잭션 구현 할 때 각 그룹을 완벽모드로 실행 할 때 어떻게 해야 하나요?
글쓴이 lzao 작성시각 2014/06/18 19:36:05
댓글 : 4 추천 : 0 스크랩 : 1 조회수 : 12923   RSS
테이블 구조는
테이블 컬럼이 두개고 각 aa, bb 입니다. 둘다 int형입니다.

$this->db->trans_start();
$this->db->query(" INSERT INTO test.test (`aa`, `bb`) VALUES (3,3);");
$this->db->trans_complete();
            
$this->db->trans_start();
$this->db->query("UPDATE test.test SET `aaa` = 3 WHERE `aa` = 5 ");
$this->db->trans_complete();

이런 소스를 짰는데 

제가 테스트 해보고 싶은 건 

위의 쿼리가 맞고 아래의 쿼리가 틀리다면 각 트랜잭션 그룹이 하나처럼 행동하는지 알고 싶습니다..

위의 소스 대로 해봤는데 트랜잭션 그룹이 각각 커밋 되더라구요

코드이그나이터의 트랜잭션은 기본적으로 완벽모드를 지원한다고 하는데 제가 소스를 잘 못 짠건가요?
 다음글 포럼소스 main(부분) 질문올립니다! (2)
 이전글 마냐 공개보드 소스 설치 문의 (1)

댓글

kaido / 2014/06/18 22:17:38 / 추천 0
$this->db->trans_start();
$this->db->query(" INSERT INTO test.test (`aa`, `bb`) VALUES (3,3);");
$this->db->query("UPDATE test.test SET `aaa` = 3 WHERE `aa` = 5 ");
$this->db->trans_complete();
lzao / 2014/06/19 11:14:26 / 추천 0
kaldo님 답변 감사합니다.
트랜잭션을 맞게 구현하려면 kaldo님 처럼 하는게 맞긴 한데
제가 알고 싶은건 트랜잭션을 두개 선언하고 각각의 그룹 중에 하나라도 실패하면 모든 트랜잭션 그룹들이 rollback이 되는 지 알고 싶습니다.
한대승(불의회상) / 2014/06/19 11:33:51 / 추천 0
그룹이라는 의미는 start와 complete 사이의 문장을 그룹으로 본다는 의미 입니다.

complete가 호출된 시점에 롤백하거나 커밋을 하기때문에 관련된 SQL문장은 kaido님이 예시 한 것처럼 묶어 주셔야 합니다.
lzao / 2014/06/19 13:24:47 / 추천 0
불의회상님 답변 감사합니다.

그럼 그룹이 각 쿼리문장이 그룹이 되는거네요??
두분 모두 답변 정말 감사합니다.