2017-11-29 1 views
-1

Евгений Кравцов : http 백엔드 및 안드로이드 앱을 사용하여 몇 가지 작은 서비스를 개발합니다. 그리고 최근에 나는 그러한 시스템에서 지식의 부족을 느꼈다.연결 손실시 DB에 중복이 생성되지 않도록하는 방법

케이스 : - 클라이언트 응용 프로그램에서 순서를 만들고 서버 에 요청을 보낼 - 위해 에 대한 데이터베이스 행을 서버 successfuly 받았다 데이터 및 만들기 - 데이터베이스 작업이 완료되면, 백엔드 (200) 성공 코드를 앱에 응답하려고합니다. - 앱 사용자가 인터넷 연결 문제가 발생하여 서버 응답을받을 수 없습니다. 응용 프로그램에서 시간 초과 예외가 발생하여 해당 주문이 성공하지 못함을 알립니다. - 얼마 후 사용자 장치의 인터넷 연결이 복원되고 같은 oreder로 다른 요청을 보냅니다. - 백엔드가이를 다시 받아 이전 주문에 대한 복제본을 만듭니다.

그래서 데이터베이스에 2 개의 주문이 있지만 사용자는 하나만 만들고 싶습니다.

질문 : 어떻게 이러한 동작을 방지 할 수 있습니까?

+0

중복 주문/요청 여부는 어떻게 정의 하시겠습니까? 새로운 요청/주문 일 수 있습니다. – Ravi

+0

예) 문제의 또 다른 측면입니다. 그것은 다른 순서 일 것이고 일반적으로 그렇습니다. 그러나 때로는 그렇지 않습니다. –

+0

그런 다음 방법이 없습니다. 어떻게 든 식별해야합니다. 동일한 순서 인 경우에만 예방할 수 있습니다. 그렇지 않으면 AFAIK이 가능하지 않습니다. – Ravi

답변

0

키의 테이블에 키를 추가해야합니다 (예 : 키를 user_id, type의 복합 키로 정의). 따라서 특정 사용자가 동일한 주문 유형으로 2 개의 주문을 할 수 없습니다.

이렇게하면 두 번째 db 삽입이 실패하게됩니다.

+0

또는 사용자가 모든 주문을 보도록 허용 할 수 있습니다. 몇 분마다 하나 이상의 요청을하지 않는 것도 도움이 될 것입니다.)))))) –