질문Q #26645
ci3 사용중 query select 후 자동 commit
phyun2024-03-20 16:09:01

제목 그대로입니다.

현재 코드이그나이터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();
}

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

도저히 이해가 안가네요

답변2
#1 변종원(웅파) 2024-03-20 17:00:25

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

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

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

#2 phyun 2024-03-20 17:26:43

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

$this->db->trans_stauts() 는

test_insert_batch() 에서 체크합니다.