펑션에서 두 사용자 재화의 조건부 트랜잭션 구현 방법 및 데이터베이스 서버 SDK 지원 여부

안녕하세요. 두 명이 참여하는 4구·3구 경기의 재화와 전적 정산을 구현하고 있어 공식 지원 방법을 문의드립니다.

  • 프로젝트명: magicCushion
  • 환경: Unity 6000.5.7f1, .NET 8
  • 펑션 개발 도구: 1.0.2에 포함된 Backend.dll
  • 검사일: 2026-10-09
  • 스테이터스 코드: 펑션 호출 HTTP 200, 내부 트랜잭션 실패 404
  • 에러 코드: NotFoundException
  • 에러 메시지: gameinfo not found

경기 시작 시 양쪽 입장료를 차감하고, 종료 시 승자에게 합계를 지급하거나 무승부이면 반환하려고 합니다. 같은 사용자의 다른 재화 변경과 경쟁할 수 있으므로 양쪽 지갑 버전과 경기 상태를 하나의 원자적 트랜잭션으로 검사·갱신해야 합니다. 서버만 수정하고 클라이언트가 직접 변경할 수 없는 저장소가 필요합니다.

호출자는 Backend.Initialize(ref stream) 이후 Backend.BMember.GetUserInfo()로 인증을 확인했습니다. 운영 재화가 아닌 공개 게임정보 진단 테이블에서 다음 결과를 직접 확인했습니다.

  1. GetV2로 A/B의 공개 행 조회: 성공.
  2. SetUpdateV2(table, inDate, owner_inDate, param) 두 개를 TransactionWriteV2로 묶어 A/B 갱신: 성공, 내부 204.
  3. SetUpdate(table, where, param)에서 owner_inDate·RunId·Slot·Version 조건으로 호출자 A의 두 행 갱신: 성공, 내부 204.
  4. 같은 조건 방식으로 B 행 갱신: 내부 404 NotFoundException, gameinfo not found.
  5. A/B/경기 상태 대용 행을 같은 조건 방식으로 묶어 갱신: 전체 실패, 모든 값 유지.

확인을 부탁드리는 사항은 다음과 같습니다.

  1. 펑션 서버 권한으로 B 소유 행에 버전 조건 또는 잔액 조건을 검사하며 갱신하는 공식 API가 있나요? 메서드 시그니처와 최소 예제를 부탁드립니다.
  2. SetUpdateV2 또는 다른 트랜잭션 API에 갱신 조건을 전달할 수 있나요? 조건 불일치 시 나머지 사용자·경기 상태·영수증 쓰기도 모두 롤백되어야 합니다.
  3. 기존 Where 기반 트랜잭션의 조건은 실제 커밋 시점에도 검사되나요, 아니면 먼저 행을 찾는 조회 조건인가요? 동일 버전에 대한 네 동시 요청 중 하나만 성공한 관찰 결과는 있으나 공식 보장 범위를 확인하고 싶습니다.
  4. 현재 데이터베이스 기능을 .NET 8 펑션에서 이용할 수 있나요? 가능하다면 공식 서버 SDK/API, 서버 인증, ClientAccess=false 테이블 접근 방법을 부탁드립니다. 아래 2026-02-24 담당자 답변에서는 펑션 미지원으로 안내되어 변경 여부를 확인하려고 합니다.
  5. 다른 사용자의 비공개 경기 기록을 서버에서 저장하는 공식 방법이 있나요?
  6. 코인·4구/3구 전적·경기 상태·영구 중복 방지 영수증을 함께 처리할 때 권장하는 뒤끝만의 구성은 무엇인가요? 별도의 외부 서버는 사용하고 있지 않습니다.

인증키, 토큰, 실제 사용자 식별자는 제외했습니다. 안내 부탁드립니다. 감사합니다.

참고 문서:

안녕하세요 개발자님,
문의해주신 내용은 상세히 확인하여 안내드릴 수 있도록 하겠습니다.
답변에 다소 시간이 소요될 수 있는 점 양해 바랍니다.

좋아요 1