Transaction 이란?
여러 데이터베이스 작업을 원자성 방식으로 처리할 수 있는 방법
트랜잭션이 커밋되면 모든 작업이 데이터베이스에 적용되고 트랜잭션이 롤백되면
데이터베이스에 어떤 작업도 적용되지 않는다.
개념에서 보이듯 원자성의 특징이 보이는데 원자성이란 트랜잭션의 어떠한 작업이 완전하게 진행되어 종료되거나
완전히 반영되지 않아야 한다는 개념이다.
사용하는 이유?
보통 데이터베이스와 관련하여 사용되는데 SQL로 데이터를 관리할 때
연결해서 사용한다고 한다. 데이터를 트랜잭션으로 처리할 때 세이브포인트가 자동
활성화되고 오류나 커밋에 문제가 생길 시 세이브포인트로 복구할 수 있다.
회고
사실 이 글을 쓴 이유는 프로그래머스 문제를 풀다가 생겨난 문제 때문이다.
상황을 설명하자면 문제에 대한 풀이 코드를 모두 적고 제출을 했는데 런타임에러가 났다. 흔히 있는 일이기 때문에
질문하기 게시판에 사람들이 써놓은 반례를 모두 써가며 제출을 했는데 모두 런타임에러가 뜨는 것이었다. 흔히 말하는
컴퓨터 탓을 하기 싫어서 2시간 동안 런타임에러 오류를 찾아보고 코드도 수정해봤다. 하지만 그렇게 했음에도 런타임에러가 떴다..
도저히 문제를 찾을 수 없어서 최후의 수단인 블로그에 있는 답을 그대로 적어서 제출을 했다. 근데? 또 런타임에러가 뜨는 것이다. 아무리 생각해도 뭔가 이상하다 싶어서 생각지도 못한 패키지 부분을 한번 건들여봤다.
그곳엔 using Transaction이 있었고 이걸 지워보니 간단히 해결됐다. 내가 여러문제를 풀면서 많은 문제를 겪었지만 패키지때문에 문제가 생긴건 처음이었다. 아무래도 런타임에러가 뜨는 이유가 실시간으로 컴파일에 저 패키지가 영향이 가서 문제가 생긴 것 같다.
결론은 프로그래머스로 C#문제를 풀다 무한 런타임에러에 걸리신 분은 이 글을보고 시간낭비 안하셨으면 좋겠다.
'TIL > C#' 카테고리의 다른 글
C# Enumerable.Repeat (1) | 2023.09.08 |
---|---|
C# String.Replace (0) | 2023.09.07 |
C# List 와 Array (0) | 2023.08.31 |
C# Dictionary (0) | 2023.08.30 |
C# 특정 값 제외 난수 생성 (0) | 2023.08.29 |