제목 | 트렌젝션 질문드립니다2 | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 책상다리 | 작성시각 | 2021/03/09 16:15:59 |
|
|||
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']); -> 이부분을 임의로 바꿔서 affected_rows가 0 이 나오도록 $this->db->update('notice_table'); $r_chk1 = $this->db->affected_rows(); $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'); $r_chk2 = $this->db->affected_rows(); $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'); $r_chk3 = $this->db->affected_rows(); if ($r_chk1 < 1 || $r_chk2 < 1 || $r_chk3 < 1) { echo $r_chk1.$r_chk2.$r_chk3; echo 'rollback'; $this->db->trans_rollback(); $r_chk4 = $this->db->affected_rows(); echo $r_chk4; exit } else { echo $r_chk1.$r_chk2.$r_chk3; echo 'commit'; $this->db->trans_commit(); $r_chk4 = $this->db->affected_rows(); echo $r_chk4; exit; } }
이전에 조언받은데로 작업해보았습니다만, 롤백이 되지 않습니다; 결과값들을 찍어보면 0 1 1 rollback 0 이 나오고 롤백이 실행되지 않은거 같습니다. 혹시 롤백하는데 추가로 database나 config 파일에서 설정을 해줘야 하는게 있는건가요? 아니면 제가 롤백에 뭔가 또 착각을 하고있는건지.. |
|||
다음글 | 특정 사용자의 세션 종료 (3) | ||
이전글 | 게시판 리스트 페이지 이동시 500에러가 납니다. (2) | ||
PureAni
/
2021/03/09 16:26:49 /
추천
0
|
한대승(불의회상)
/
2021/03/09 16:45:23 /
추천
0
위 코드에서 트랜잭션 사용하는 이유가 뭔가요? |
책상다리
/
2021/03/09 17:05:50 /
추천
0
PureAni님// 그렇네요 제가 봐도 어색한 표현입니다;; 왜저렇게 썼지..트랜젝션 지원여부를 확인할수 있나요? mysql 이노DB입니다. 한대승(불의회상)//세개의 구문중에 실행되지 않는 구문이 있으면 원래대로 돌려놔야해서 그렇습니다. 트렌젝션 말고 좋은 방법이 있을까요? |
변종원(웅파)
/
2021/03/10 09:06:03 /
추천
0
첫번째 조건 실행해서 적용된게 없으면 나머지 실행 안함 등 분기처리를 하시면 될 것 같네요. 트랜잭션으로 처리할 게 아니라고 보여집니다. |
한대승(불의회상)
/
2021/03/10 10:59:21 /
추천
0
@책상다리 innoDB 트랜잭션 지원합니다. 로직은 변종원님 의견에 1표 |
롤백이 실행되지 않은거 같다라는 의문형이라는게 좀 이상한데..
현재 DB가 트랜잭션을 지원하나요?