CI 묻고 답하기

제목 트랜잭션관련 질문입니다. 3.0
카테고리 일반
글쓴이 엘제이 작성시각 2019/04/09 17:34:57
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 127   RSS

아래와 같이 재귀함수를 호출하는 함수가 있습니다. ㅈ

재귀함수에 트랜잭션을 설정하면 매번 insert 할 때마다 트랜잭션을 걸리잖아요 

그래서 재귀함수를 호출하는 모함수에 재귀함수 앞뒤로 트랜잭션을 설정했는데 

이렇게 해도 트랜잭션이 가능한건지 알고 싶습니디ㅏ.

public function afunc()

{

    $this->db->trans_start();

    $this->bfunc();

    $this->db->trans_complete();

}

private function bfunc()

{

     foreach($obj as $list){

        if(a!=b){

            bfunc();

       } else {

           // db insert 작업

       }     

    }

}

 다음글 CSV파일내역을 DB에 넣는중 문제가 있어서 질문드립니... (4)
 이전글 zip 관련해서 문의드립니다. (2)

댓글

kaido / 2019/04/09 17:40:17 / 추천 0

a != b 조건이 되면 무한 루프가 될것 같긴 합니다만... 일단 둘째치고

else 타서 insert 타는 조건이라면 상관없습니다.

배강민 / 2019/04/09 17:53:28 / 추천 0

어차피 트랜젝션이 start 이후 commit 전까지의 DML을 모아서 처리하는하는거라서 정상적으로 걸릴것으로 보이긴 합니다만,

확실히 디버깅 해보고자 하신다면

http://www.ciboard.co.kr/user_guide/kr/database/transactions.html 의 최하단 수동 트랜젝션으로 status()로 루프에서 확인해볼 수 있지 않을까 싶네요.

해본건 아니라면 명확하진 않습니다.