CI 묻고 답하기

제목 Codeigniter에 트랜잭션 관련 질문입니다.
카테고리 CIBOARD
글쓴이 브레인토스트 작성시각 2016/09/23 21:13:22
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 17167   RSS

현재 운영하고 있는 사이트에서

쿼리의 성공이나 실패에 따라서 Model 메소드 안에서 특정변수에 array를 담아서

성공이나 실패에따라서 array에 키:값을 넣어서 리턴하는 방식을 사용하고 있습니다.

근데 이게 계속 이런식으로 개발하다보니 Controller로 리턴됐을때 그 메소드의 성공유무를

매번 if분기를 통해서 그 결과에 따라서 처리방식을 바꿔주다보니

코드가 if문으로 떡칠이 되는 형태가 되어버리더군요.

그래서 트랜잭션을 검색해보니 CI에서 자체적으로 지원하는 트랜잭션 기능이 있더라구요.

다행히도 적용가능한 InnoDB를 사용중입니다만은...

어찌됐든 질문은 그 메뉴얼에 나와 있는대로 보면

수동과 자동 형태로 트랜잭션을 사용가능한데

자동으로 했을 경우에도 $this-db->trans_status()로 TRUE와 FALSE를 파악하는게 가능한가요??

 

예를 들어서

$this->db->trans_start();

$this->db->query('AN SQL QUERY...');

$this->db->query('ANOTHER QUERY...');

$this->db->query('AND YET ANOTHER QUERY...');

$this->db->trans_complete();

$result = $this->db->trans_status();

예를 들어서 이런식으로 실행한다면 $result 변수에는 상단에 실행한 트랜잭션의 결과가 나오게 되는건가요 ??

 

그리고 CI에 트랜잭션을 전체적으로 중요한 데이터의 Insert와 Update Delete와 같은 구간에서 사용해주는것이

성능상에 무리가 없는지도 궁금합니다.

 다음글 아직 실행은 안해보고 코드만 짜보았는데 이렇게 했을 경... (7)
 이전글 ci에서 file_get_contents 함수를 사용할... (2)

댓글

변종원(웅파) / 2016/09/25 19:22:32 / 추천 0

트랜잭션은 기본적으로 부하가 따릅니다. ci이던 native php던지 상관없습니다.

 

돌다리도 두들겨보고 건너는 것이 좋다라는 속담이 있긴 하지만

매뉴얼에 명시되어 있는 내용을 되는지 안되는지 물어보시는건... ^^;

그리고 적어주신 예문은 자동 실행의 예이고 매뉴얼 제일 하단에 수동실행 예가 있습니다.

샘플 insert 하나 만들어서 직접 실행해보세요.

브레인토스트 / 2016/09/26 08:40:39 / 추천 0

@변종원

아 죄송합니다

메뉴얼에 있는 내용이 되는지 안되는지 물어본게 아니라요.

메뉴얼에 보면 위에 코드 중에 $result 부분 제외하고만 따로 되어있고

수동부분에서는 $result 에 들어가는 코드를 사용하고 이런 식이라 여쭤본겁니다 ^^

그리고 제가 지금 당장 테스트를 해볼 상황이아니라서 여쭤본거구요..

아무튼 감사합니다 ㅎ

kaido / 2016/09/26 14:09:43 / 추천 0

@브레인토스트

var_dump($result);

print_r($result);

 

....

모르는게 많을 수록 상상 코딩 하지 말고 손 코딩해서 찍어봐야 합니다.

충분히 테스트가 가능한 부분을 질문 하는 것은 거칠게 표현하면 이거에요..

 

"나 코딩 하기 싫은데 답은 알고 싶어. 알려줘."

 

이렇게 보입니다.

이런경우 알려줘도 결국 기억에 안 남습니다.

[제가 그랬으니 틀린 말은 아닐 겝니다.]