고객님의 문의에 답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.
커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.
문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.
- 뒤끝 SDK 버전 :
- 프로젝트명 : 프로젝트D
- 스테이터스 코드 :
- 에러 코드 :
- 에러 메시지 :
신규 데이터베이스 트랜잭션 기능을 테스트 중인데, 조건절 동작 방식 관련해서 문의드립니다.
A 테이블에서 재화를 차감할 때
point >= 10 인 경우에만 차감되도록 조건을 걸고,
동시에 B 테이블의 점수를 증가시키는 트랜잭션을 아래와 같이 구성했습니다.
var result = await DBClient.Transaction()
.From<A>()
.Where(x => x.InDate == BackEnd.Backend.UserInDate)
.Where(x => x.point >= 10)
.Dec(x => x.point, 10)
.From<B>()
.Where(x => x.Id == b.Id)
.Inc(x => x.score, 100)
.Update()
.Commit();
그런데 A 테이블의 point가 10 미만인 경우에도
조건을 무시하고 차감 및 B 테이블 업데이트가 함께 수행되는 것으로 보입니다.
반면, 단순 조회에서는 아래와 같이 Where(x => x.point >= 10) 조건이 정상적으로 동작하여
재화가 10 이상인 경우에만 데이터가 조회됩니다.
var userData = await DBClient.From<A>()
.Where(x => x.InDate == BackEnd.Backend.UserInDate)
.Where(x => x.point >= 10)
.FirstOrDefault();
트랜잭션에서의 Where 조건은 조회와 달리
실제 조건 검증(재화 부족 시 트랜잭션 실패)이 아니라
단순 대상 레코드 필터링 용도로만 동작하는 구조인지,
아니면 제가 트랜잭션 조건 사용 방식을 잘못 이해하고 있는 부분이 있는지 확인 부탁드립니다.