회사/DB

[DB / MSSQL] BEGIN, COMMIT, ROLLBACK TRAN

daykim 2024. 10. 16. 15:34

참고

https://learn.microsoft.com/ko-kr/sql/t-sql/language-elements/begin-transaction-transact-sql?view=sql-server-ver15

 

BEGIN TRANSACTION(Transact-SQL) - SQL Server

명시적 로컬 트랜잭션의 시작 위치를 표시합니다. 명시적 트랜잭션은 BEGIN TRANSACTION 문으로 시작되어 COMMIT 또는 ROLLBACK 문으로 끝납니다.

learn.microsoft.com

 

BEGIN TRAN
	
    ...
    
COMMIT || ROLLBACK
  • MSSQL 기본 설정 : AUTO-COMMIT이다.
  • INSERT, UPDATE, DELETE 명령문을 사용 후 자동으로 COMMIT이 되면, 실수한 경우 큰 문제가 발생할 수 있다.
  • 이런 문제를 방지하기 위해 사용할 수 있는 명령어다.
  • 음.. 나는 프로님이 디비버 설정 변경해주셔서 직접 커밋해야만 적용되긴하지만, 알아두면 좋지

 

BEGIN TRAN

  • 명시적 로컬 트랜잭션 시작 위치를 표시한다.
  • 해당 명령문을 실행하면, TRANSACT-SQL 문을 지원하기 위해 리소드들이 트랜잭션에 의해 잠긴다.
  • 트랜잭션이 장기간 처리중이면, 그동안 다른 사용자가 잠신 리소스에 접근할 수 없다.

 

COMMIT || ROLLBACK

  • 트랜잭션이 오류없이 완료되고 수정한 내용을 데이터베이스에 저장하고 싶다면 COMMIT 명령어를 사용하면 된다.
  • 만약 오류가 발생하면, ROLLBACK 명령어를 사용해 BEGIN TRAN을 실행하기 전 상태로 돌릴 수 있다.
  • 이 명령문을 사용하지 않으면, TRANSACTION이 계속 잡혀있는 상태로 DB가 정상작동하지 않는다. 리소스가 잠기기 때문이다.

 

주의

  • DROP, TRUNCATE와 같은 명령어는 ROLLBACK이 적용되지 않으므로 주의해야한다.

 


  • BEGIN TRAN을 실행 후
  • DELETE || UPDATE || INSERT 문을 실행 후
  • SELECT를 실행해 제대로 적용됐는지 확인한다.
  • 후에 결과를 보고 COMMIT || ROLLBACK을 수행하면 된다.

'회사 > DB' 카테고리의 다른 글

[DB] 파티션 프루닝 (PARTITION PRUNING)  (0) 2024.10.28
[DB / MSSQL] COLLATION (정렬방식)  (0) 2024.10.16
[DB/SQL] AND / OR 우선순위  (1) 2024.09.25
[DB] 인덱스와 파티션 차이  (1) 2024.09.09
[DB / MSSQL] 중복 레코드 관리  (0) 2024.04.04