제목 | 트랜젝션 질문입니다 | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 책상다리 | 작성시각 | 2021/03/05 13:12:43 |
|
|||
function notice_write($arrays) { $this->db->trans_begin(); $this->db->set('successflag',$arrays['successflag']); $this->db->set('delflag',$arrays['delflag']); $this->db->set('msg',$arrays['msg']); $this->db->set('paycode',$arrays['paycode']); $this->db->where('idx',$arrays['idx']); $this->db->update('notice_table'); $this->db->set('id',$arrays['id']); $this->db->set('price',$arrays['price']); $this->db->set('info',$arrays['info']); $this->db->set('successflag',$arrays['successflag']); $this->db->set('dRegTime',$arrays['dRegTime']); $this->db->set('tRegTime',$arrays['tRegTime']); $this->db->insert('PointUse'); $this->db->set('nTotalUseDP','nTotalUseDP + ' . $arrays['price'], false); $this->db->set('dtLastUse',$arrays['last_date']); $this->db->where('id',$arrays['id']); $this->db->update('PointMain'); if ($this->db->trans_status() === FALSE) { $this->db->trans_rollback(); return false; } else { $this->db->trans_commit(); return true; } }
위와같이 트랜젝션 구성했을때, 커밋이 실패해도 롤백이 되지 않고, 나머지 구문이 커밋되면서 true로 넘어가고 있습니다; 예를들어 첫번째 update구문에 이상한 값을 넣어서 update가 실행되지 않아도 나머지 두개의 구문이 커밋되고 그대로 처리가 됩니다. 일단은 메뉴얼에 사용법을 토대로 만들었는데 제 사용방법이 잘못된건지 궁금합니다 엑티브레코드로 해서 그런가 시험삼아 $this->db->query('query'); 이런식으로 3개 똑같이 구성해서 시도해봤는데도 마찬가지였습니다; |
|||
다음글 | Pagination 사용시 한글 깨지는 문제가 있어 문... (2) | ||
이전글 | CI 4.1.1 서버 셋팅 오류 관련 문의드립니다. (7) | ||
변종원(웅파)
/
2021/03/05 13:26:16 /
추천
0
|
PureAni
/
2021/03/05 13:34:37 /
추천
0
update 시 where 에 없는값.. 즉, DB에 없어서 update 가 안되는 where 값을 넣었다는거죠? 그러면 정상적인 실행맞습니다. |
책상다리
/
2021/03/05 13:38:00 /
추천
0
변종원님//아.........;;; 감사합니다. PureAni님//감사합니다. |
뭔가 잘못 생각하시고 있는 것 같네요.
업데이트 구문 자체가 틀려서 업데이트 액션 자체가 실행이 안됐을 때 트랜잭션이 실패하는 것이지
올바른 구문에 업데이트 조건이 맞지 않아 업데이트가 안된 것은 정상상태입니다.
원하시는 상황을 구현하려면 affected_rows()함수로 업데이트가 됐는지 여부에 따라 다음 액션을 실행하게 해야 합니다.