무른 모 공방 : : 데이터베이스 의 작업 단위 트 렌 잭 션 & 테이블 복사 
 데이터베이스 의 작업 단위 트 렌 잭 션 & 테이블 복사 
 Dev Center / DB + JSP start / 2010 . 8 . 24 . 19 : 39 
 데이터 베이스 는 데이터 가 를 안 전하 게 지키 는 것 이 가장 중요 하 기 때문 에 , 일정 부분 에 대해서 는 실수 도 보장 을 해 주 는데 , 이것 을 롤백 이 라고 한다 . 그리고 작업 을 이루 는 단위 는 트랜잭션 이 라고 한다 . 
 트랜잭션 단위 
 데이터베이스 에서 이루어지 는 작업 의 최 소단위 를 트랜잭션 단위 라고 한다 . 테이블 을 생성 하 거나 , 데이터 를 삭제 하 거나 , 제약 조건 을 추가 하 거나 , 이런 모든 작업 들 을 하나 의 트랜잭션 이 라고 할 수 있 다 . 데이터베이스 에서 이런 작업 을 기록 하 는 이유 는 , 사용자 , 또는 시스템 상 의 실수 를 보상 하 기 위해서 이 다 . 만일 은행 계좌 에서 돈 을 인출 하 는 과정 을 하나 의 트랜잭션 이 라고 할 때 , 돈 을 인출 하 고 , 그것 을 확인 하 는 과정 에서 시스템 이 정지 되 었 다고 가정 해 보 자 . 그렇 다면 , 돈 을 인출 한 것 이 사용 자 에게 확인 이 되 지 않 았 기 때문 에 인출 하 기 이전 의 상태 로 돌아가 야 한다 . 하지만 , 이미 이루어진 작업 에 대해서 돌이킬 수 없 다면 , 어느 누구 도 보상 해 주 지 않 는 것 이 다 . 이런 상황 을 되돌려 주 는 기능 이 롤백 기능 이 다 . 
 COMMIT , ROLLBACK , 그리고 SAVEPOINT 
 그렇 다고 데이터베이스 의 모든 작업 이 무한정 으로 저장 되 는 것 은 아니 다 . COMMIT 이 라는 명령어 를 받아들이 기 전 까지 의 행동 을 기억 하 게 된다 . COMMIT 이 라는 것 은 일종 의 확인 으로 , 한번 COMMIT 을 하 게 되 면 더 이상 은 되돌리 지 않 겠 다는 확인 의 의사 표현 과 동일 하 다 . 그래서 한 번 ROLLBACK 을 하 게 되 면 이전 에 COMMIT 을 한 이후 최초 의 순간 으로 돌아가 게 되 는 것 이 다 . 하지만 , 이런 식 으로 작업 을 되돌리 기 에 는 허술 한 감 이 없 잖아 있 는데 , SAVEPOINT 를 주 어 단계 적 으로 작업 을 되돌리 는 것 이 가능 하 다 . 물론 그 사이 에 COMMIT 을 하 게 된다면 모든 것 은 그냥 ' 인정 ' 되 어 버리 고 만 다 . 
 위 와 같 은 순서 대로 쿼 리문 을 진행 하 게 되 면 , 삭제 된 4 , 5 는 원래 대로 돌아오 게 된다 . 그리고 한 번 더 ROLLBACK S 1 을 실행 시키 면 삭제 된 2 , 3 도 원래 대로 돌아오 게 된다 . 하 지만 ROLLBACK S 2 를 하 지 않 은 상태 에서 S 1 을 곧바로 실행 한다면 S 2 의 상태 로 는 되돌릴 수 없 게 된다 . 순차 적 인 회복 만 가능 한 것 이 다 . 
 테이블 을 복사 하 는 방법 . 
 테이블 을 복사 하 는 방법 에 는 두 가지 가 있 다 . 테이블 의 형식 만 복사 하 는 방법 과 , 테이블 과 , 데이터 를 통채 로 복사 하 는 방법 이 다 . 
 위 의 쿼리 는 대상 테이블 의 모든 데이터 를 새로운 테이블 에 복사 하 게 된다 . 물론 새로운 테이블 과 대상 테이블 의 테이블 구조 는 동일 해야 한다 . 
 TAG commit , rollback , SAVEPOINT , 데이터 복사 , 롤백 , 세이브 포인트 , 테이블 복사 , 트랜잭션