개발 Q&A

제목 ci3 사용중 query select 후 자동 commit
카테고리 PHP
글쓴이 phyun 작성시각 2024/03/20 16:09:01
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 3451   RSS

제목 그대로입니다.

현재 코드이그나이터3 사용중입니다

$this->db->trans_begin();

        for($i = 0; $i < 10; $i++) {
            $arr_dump[$i]['FIELD1'] = $i;
            $arr_dump[$i]['FIELD2'] = $i;
        }

        if($this->phs_model->test_insert_batch($arr_dump) === false) {
            $this->db->trans_rollback();
            $result = array(
                "status" => "fail",
                "msg" => "업로드 실패!"
            );
            echo json_encode($result);
            exit;
        }

        $cnt_duplicate_cnt = $this->phs_model->sel_test();

        $this->db->trans_rollback();
        exit;

 

오라클db 사용중인데

rollback이 되지않네요.

auto_commit은 꺼뒀구요.

sel_test() 없이 trans_rollback을 하니 정상적으로 작동합니다.

sel_test() 함수 코드는

function sel_test(){
    $query = "select * from PHS_TEST";
    return $this->db->query($query)->result();
}

이렇게 되어있습니다....

도저히 이해가 안가네요

태그 ci3,php,rollback
 다음글 ci4 파일 업로그 후 링크방법 (2)
 이전글 json 응답 출력하는 방법 (1)

댓글

변종원(웅파) / 2024/03/20 17:00:25 / 추천 0

우선 저렇게 짠 이유가 궁금하네요? 

정상적인 형태로 만들고 작동 안되면 이해가 되는데 단순히 롤백이 작동하나 안하나 테스트해보려고 하는건가요?

https://ciboard.co.kr/user_guide/kr/database/transactions.html#running-transactions-manually

phyun / 2024/03/20 17:26:43 / 추천 0

단순히 롤백 동작 확인을 위해 저렇게 작성했습니다.

$this->db->trans_stauts() 는

test_insert_batch() 에서 체크합니다.