본문 바로가기

수업 & 공부/수업 내용

20- SQL ( DB트랜잭션 )

트랜잭션데이터베이스 관리 시스템에서 상호작용의 단위이다

  예) jsp 웹 어플리케이션 <-> RDBMS에 날리는 한개의sql문

 

DBeaver 오토커밋 끄기

  1. 윈도우 > 옵션 > 연결유형 auto cummit 설정해제 후 apply

  2. set autocommit = false 를 실행하여 autocommit 옵션을 끄자

 

RDBMS 데이터의 저장공간 2가지로 나뉜다 (임시 저장공간, 확정된 저장공간)

  (위에서 오토커밋 끈 이유 : 오토커밋을 켜면 임시공간 안쓰고 바로 확정된 저장공간으로 보낸다)

  commit or rollback 쓰지않은 상태에서는 데이터가 임시저장공간에 있다가 commit or rollback 

  명령을 내려주면 날라가거나 확정된 저장공간에 확정될 수 있다.


왜 이렇게 하나요 (트랜잭션을 알아야 하는 이유) ?
 실제 프로젝트상 웹 어플리케이션은 한개의 기능을 수행할 복수개의 update , delete, insert 쿼리를

 수행해야 할 때가 있다
 웹 어플리케이션 개발의 가장 기본은 항상 단위 기능이 실패했을때를 염두에 둬야한다
 이때 어떻게해야 데이터의 무결성을 지킬 것인가?
 *  예) user테이블 업데이트(sql), 비번변경시각 테이블 업데이트(sql) 

 *  여기서 비밀번호는 업데이트 되었지만 비빌번호 변경 시각이 업데이트 되지 않으면 큰일이 난다

 *  다 성공했을때만 commit을, 하나라도 실패하면 rollback해서  잘못된 데이터가 들어가는것을 막는역할

 

 

 

트랜잭션 제어 예제

  244번 줄 쿼리는 'testtest22' 가 출력됐지만

  rollback을 실행하고 다시 select * from test 를 실행하면 

  rollback 되어 hihi가 다시 출력되는 것을 볼 수 있다.

  commit을 하여 확정된 저장공간으로 보냈으니 롤백해도 변하지 않는다

 

 

 

  * set autocommit = ture 로 변경하여 실행하면 아래 사진처럼 rollback이 먹지않는다 *