RDBMS
- 데이터의 저장공간 2가지로 나뉨
- COMMIT OR ROLLBACK
- 임시 저장공간 -> 확정된 저장공간
- 이유 : 실제 프로젝트상 웹 어플리케이션 한개의 기능을 수행할 때 복수 개의 update, delete, insert 쿼리를 수행해야 할 때가 있다
웹 어플리케이션 개발의 가장 기본
- 항상 단위 기능이 실패 했을 때를 염두에 둬야한다.
- 단위 기능 하나에 쿼리를 두번 이상 수행해야 할 경우
- 예) user테이블 업데이트(sql), 비번변경시각 테이블 업데이트(sql)
트랜잭션(상호 작용)
- 데이터 처리의 한 단위
- 한 개의 쿼리 실행작업
- TCL(COMMIT,ROLLBACK,SAVEPOINT)
- 트랜잭션 사용 이유 : 데이터의 일관성을 유지하면서 안정적으로 데이터를 복구하기 위해서
- ex) jsp 웹 어플리케이션 <--> RDBMS에 날리는 한 개의 SQL문
COMMIT과 ROLLBACK
- COMMIT : 변경사항 저장
- ROLLBACK : 변경사항 취소
트랜잭션(SQL 실습)
실습 전 DBeaver 환경 설정 => DBeaver에는 자동 커밋 기능이 설정되어있기 때문에
1. 윈도우 -> 설정
1. 환경 설정 창 -> 연결 -> 연결 유형 클릭한 후 Auto-commit by default 체크를 해제
1. 우선 테이블을 생성한다
create table test(
id int primary key,
name varchar(50) not null
)
2. autocommit 옵션을 켠 후 생성한 테이블에 데이터를 삽입하고 데이터가 잘 들어갔는지 확인
set autocommit = true
insert into test values(1,'chulsoo')
select * from test
3. autocommit 옵션을 끈 후 1번 데이터를 수정한다
set autocommit = false
update test set name = 'seungyeop' where id = 1
select * from test -- name = seungyeop
rollback
select * from test -- name = chulsoo
4. 1번 데이터를 수정한 후 커밋 실행(autocommit 꺼진 상태)
update test set name = 'jinwoo' where id = 1
commit
select * from test -- name = jinwoo
rollback
select * from test -- name = jinwoo
4. autocommit 켠후 name 수정
set autocommit = true
update test set name = 'autocommit' where id = 1
rollback
select * from test -- name = autocommit
트랜잭션(SQL 실습) 정리
- autocommit을 키면 sql쿼리를 실행할 경우 자동적으로 커밋된다
- autocommit을 끄면 sql쿼리를 실행할 경우 자동적으로 커밋되지하고 commit을 직접 실행해서 커밋해야 한다
- COMMIT은 처리과정을 DB에 영구 저장함으로 모든 작업들이 정상적으로 처리되었을 때 해야한다
- ROLLBACK은 트랜잭션 시작되기 이전의 상태로 되돌린다(마지막 COMMIT 완료된 시점으로 되돌림)
'Database' 카테고리의 다른 글
2021-08-23(SQL문 -Like) (0) | 2021.08.23 |
---|---|
2021-08-20(집계함수(group by)) (0) | 2021.08.20 |
2021-08-20(sql문 연습) (0) | 2021.08.20 |
2021-08-19 (Equi Join) (0) | 2021.08.19 |
2021-08-19(eXERD 식별(1:1)관계 실습) (0) | 2021.08.19 |