공유 규칙

일관성은 "총합 700을 만족하는 상태에서 다시 총합 700인 상태로 이동했는가"를 봅니다.

계좌별 숫자만 맞아 보이는지가 아니라, 트랜잭션 전후에 규칙이 계속 유지되는지가 핵심입니다.

이체 규칙 A + B = 700 출금과 입금은 함께 완료
공유 시작 상태
A 계좌 500
B 계좌 200
총합 700
정상 커밋 출금과 입금이 함께 반영됨

값은 이동하지만 규칙은 유지됩니다.

부분 반영 출금만 남고 입금이 누락됨

중간 상태가 최종 상태처럼 남아 버립니다.

처리
A에서 100 출금, B에 100 입금

한 트랜잭션 안에서 두 변경이 같이 성공합니다.

A에서 100 출금, B 입금은 실패

총합 규칙을 끝까지 지키지 못한 반쪽 실행입니다.

최종 상태
규칙을 만족하는 다음 상태
A 계좌 400
B 계좌 300
총합 700
규칙이 깨진 잘못된 상태
A 계좌 400
B 계좌 200
총합 600
판단
일관성 유지

트랜잭션이 규칙 만족 상태에서 다른 규칙 만족 상태로 이동했습니다.

롤백 대상

100이 사라진 것처럼 보여 총합 규칙이 깨지므로 최종 결과가 될 수 없습니다.

핵심: PRIMARY KEY, FOREIGN KEY 같은 선언적 제약은 DBMS가 검사하고, 이체 전후 총합 보존 같은 비즈니스 규칙은 애플리케이션 로직이나 트리거가 끝까지 보장해야 합니다.