[mysql,php] 트랜잭션과 try catch throw 처리. 프로그래밍

이번에 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 :

Leave Comments