[mysql,php] 트랜잭션과 try catch throw 처리. 프로그래밍
2016.03.18 13:30 Edit
이번에 DB재설계 작업을 하게되면서..
DB 정규화 작업을 거치게 되었다...
그러면서 언어별로 들어가는 content 테이블이 만들어지게됐는데...
쪼개지다보니 notice 라는 공지사항 테이블이 있지만 content는 언어별로
content안에 들어가게 되는것이다...
무결성/신뢰성을 가져갈려면 insert, update, delete 가 될때
notice 테이블과 content테이블이 연동이 되어야 하며 어느 한쪽이라도
데이터가 깨지거나 들어가지 않는경우가 생기면 무결성이 깨지는것이다.
// 트랜잭션 시작 $oDB = &DB::getInstance(); $oDB->begin(); try { // 데이터 처리 // Todo..... // 처리 도중 에러처리를 해야할때... 에러를 던짐. if( $nMemberNum >= 1 ) { throw new Exception('1보다 크거나 같다.'); } // 처리가 무사히 끝났으면 최종 커밋 $oDB->commit(); } catch(Exception $e) { // catch 구문에서 에러를 잡고 에러메세지 출력 echo $e->getMessage(); // 에러가 발생했으므로 롤백처리 $oDB->rollback(); }
트랜잭션을 걸고 try 부분에서 무사히 처리가 끝났으면 최종커밋하고
에러가 발생하면 에러를 던져서 에러메세지를 띄우고 롤백 시키는 형식이다.
- Tag :
- php , sql , transaction , try , catch