해결된 질문
작성
·
258
·
수정됨
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예
[질문 내용]
ACID 중 일관성에 대한 질문이 있습니다.
자료를 보면 "데이터베이스에서 정한 무결성 제약 조건을 항상 만족해야한다" 라고 작성되어 있는데요.
name 컬럼을 가진 테이블이 있고 해당 컬럼은 null 값을 허용하지 않는다는 제약조건을 가진다고 가정하겠습니다.
트랜잭션이 진행되는 과정에서 name 이 null 로 변경되었다가 최종적으로 트랜잭션이 종료되기 전에 name 에 값이 채워진다면 이 부분도 일관성을 만족하지 못한다고 할 수 있을까요?
아니면 트랜잭션이 종료되는 시점에는 제약조건을 만족했으니 일관성을 만족한다고 보는걸까요?
만약 일관성을 만족하지 못하는 것이라면 해당 트랜잭션은 rollback 되나요?
답변 1
1
안녕하세요. jaden님, 공식 서포터즈 y2gcoder입니다.
말씀해주신 예제에 따르면, name 컬럼이 일시적으로 null로 설정되었지만 트랜잭션 종료 시점에는 다시 유효한 값으로 설정되었다면 트랜잭션의 최종 상태는 무결성 제약 조건을 만족하므로 일관성 원칙도 만족합니다. 따라서 이 경우 트랜잭션은 롤백되지 않습니다.
만약 트랜잭션이 커밋 시점에 name 컬럼이 null 인 상태로 남아 있다면, 데이터베이스 시스템은 무결성 제약 조건을 위반하게 되므로 트랜잭션은 롤백되어야 합니다.
요약하자면, 트랜잭션이 진행되는 도중에는 일시적으로 무결성 제약 조건을 위반할 수 있지만, 트랜잭션이 종료되는 시점에는 모든 제약 조건을 만족해야 합니다.
감사합니다.