트랜잭션 ACID 에 대한 질문이 있습니다.
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예
[질문 내용]
ACID 중 일관성에 대한 질문이 있습니다.
자료를 보면 "데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야한다" 라고 작성되어 있는데요.
name 컬럼을 가진 테이블이 있고 해당 컬럼은 null 값을 허용하지 않는다는 제약조건을 가진다고 가정하겠습니다.
트랜잭션이 진행되는 과정에서 name 이 null 로 변경되었다가 최종적으로 트랜잭션이 종료되기 전에 name 에 값이 채워진다면 이 부분도 일관성을 만족하지 못한다고 할 수 있을까요?
아니면 트랜잭션이 종료되는 시점에는 제약조건을 만족했으니 일관성을 만족한다고 보는걸까요?
만약 일관성을 만족하지 못하는 것이라면 해당 트랜잭션은 rollback 되나요?
답변 1
1
안녕하세요. jaden님, 공식 서포터즈 y2gcoder입니다.
말씀해주신 예제에 따르면, name 컬럼이 일시적으로 null로 설정되었지만 트랜잭션 종료 시점에는 다시 유효한 값으로 설정되었다면 트랜잭션의 최종 상태는 무결성 제약 조건을 만족하므로 일관성 원칙도 만족합니다. 따라서 이 경우 트랜잭션은 롤백되지 않습니다.
만약 트랜잭션이 커밋 시점에 name 컬럼이 null 인 상태로 남아 있다면, 데이터베이스 시스템은 무결성 제약 조건을 위반하게 되므로 트랜잭션은 롤백되어야 합니다.
요약하자면, 트랜잭션이 진행되는 도중에는 일시적으로 무결성 제약 조건을 위반할 수 있지만, 트랜잭션이 종료되는 시점에는 모든 제약 조건을 만족해야 합니다.
감사합니다.
spring initialiser 어떤걸 선택해야될지 모르겠어요
0
38
2
트랜잭션 템플릿이 체크예외는 커밋하는 이유가 궁금합니다.
0
51
1
jdbc 학습하다 궁금해서 질문드려요
0
84
1
정상이체와 이체중 예외발생 차이
0
70
2
이번 강의부터가 JDBC 직접 사용 맞나요?
0
89
1
순수한 서비스 계층에 대한 의문???
0
82
2
3_4test, 4test 자동 리소스 안됨
0
59
2
데이터베이스 선택 관련 질문.
0
70
2
after 메서드 사용 유무
0
59
2
데이터베이스 접근 및 DB 락
0
57
1
@SpingBootTest, @TestConfiguration
0
57
1
Read Committed 격리 수준 사용 관련 질문
0
50
1
AopCheck Test 부분의 EnhancerBySpring 확인 법??
0
69
2
커리큘럼 관련 질문
0
78
1
서비서 계층 스프링 프레임워크 사용
0
89
1
validation(toMember)의 위치
0
84
2
데이터 계층에서 서비스 로직의 datasource를 인식하는 방법
0
166
2
member 상수 질문
0
124
2
ctrl + F6 이후로 con 인식이 안 됩니다
0
154
2
DrivenManager 와 Connection 반환에 대한 질문입니다!
0
110
1
섹션5 트랜잭션 템플릿관련 질문(이기종 DB)
0
116
1
세션1 테이블 조회결과 그림은 Redo 로그에 속하나요?
0
103
1
트랜잭션이 필요하지 않은 경우 DB 대신 파일 시스템을 사용하는 것이 더 효율적인가?
0
98
1
강의 14분쯤 Exception 질문
0
116
2





