RDBMS는 데이터의 저장공간이 2가지로 나누어 지는데,
한가지는 임시 저장공간이고, 또 다른 한가지는 확정된 저장공간이다.
commit or rollback
커밋이나 롤백을 통해 임시저장공간에 저장을 할 것인지,
날리고 확정된 저장공간으로 설정을 할 것인지를 결정한다.
set autocommit 을 통해 설정을 제어 할 수 있도록, auto를 키면 바로 확정된 저장공간으로 저장이 되며,
set autocommit false (끄면) 일일이 커밋을 해 주어 임시 저장공간의 데이터를 확정된 저장공간으로 옮겨야 한다.
왜 이렇게 하느냐
실제 프로젝트상 웹 어플리케이션 한개의 기능을 수행할 때 복수 개의 update,delete,insert 쿼리를 수행해야 할 때가 있다.
*웹 어플리케이션 개발의 가장 기본
- 항상 단위 기능이 실패 했을 때를 염두해 두어야한다.
- 단위 기능 하나에 쿼리를 두번 이상 수행해야 할 경우
- 예) user테이블 업데이트, 비번변경시각 테이블 업데이트(sql)
- 쉽게 말하여 auto commit을 끄고 실행했을때 전부 에러없이 성공햇을때만 커밋을 한다.
한개의 쿼리 실행 작업 : 트랜잭션상호작용)
예) jsp 웹 어플리케이션 <-> RDBMS에 날리는 한개의 sql문
보통 autocommit옵션을 평소 주지않는다.
간단한 예제로 test테이블을 만들어 테스트 해보기
우선 test테이블을 하나 만든다.
만든 후 test테이블에 데이터를 삽입한다(hihi)
autocommit 옵션 끄기
UPDATE: 수정
hihi데이터를 update를 통해 joohyeong으로 수정해보았다.
select구문을 통해 확인해본 결과 name의 수정이 완료된 것을 볼 수 있다.
그다음 rollback을 하면 다시 원래있던데이터 hihi로 돌아온다.
autocommit = true 예제
1. autocommit을 true로 하여 설정한다.
2. 테이블의 id 1번값을 autocommit으로 수정한다.
3. rollback
4. test테이블을 보여라.
autocommit = fase예제
1. autocommit을 falese로 설정.
2. 테이블 id 1번값 autocommitfalse로 수정.
3. rollback
4. test테이블을 보여라
rollback 하였기 때문에 autocommitfalse로 수정된 값이 autocommit으로 돌아간걸 볼 수 있다.
update, insert 예제
1. id 1번값 autocommit으로 수정
2. test테이블의 2번째줄 name2삽입
3. test테이블 3번째줄 joohyeong삽입
4. test테이블을 보여라
5. commit
결과
delete구문 스스로 테스트 해보기
위의 앞서 만든 테이블 결과에서
1,2. test테이블의 2번줄 삭제
3. test테이블을 보여라 (3번째줄 select문을 실행하였을 때 delete명령어를 통해 2번째 줄이 삭제됨)
4. rollback
5. test테이블을 보여라 ( rollback으로 다시 select문을 마지막 실행 하였을때 다시 2번째줄이 돌아옴)
'db' 카테고리의 다른 글
sql like 구문(%,_) (0) | 2021.08.23 |
---|---|
Equi join 연습 (0) | 2021.08.20 |
DB:ERD관계 정리 (1:N,1:1) (0) | 2021.08.19 |
exerd 용어 설명 (0) | 2021.08.19 |
eclipse 및 exerd 설치 과정 (0) | 2021.08.19 |