그래서 여기에 동기화 문제가 있습니다. 의 상황을 설명하자PostgreSQL이 여러 사용자와 공유 테이블을 잠급니다.
id sending_object_id type destinatary
ID가 자동 일련 ID PostgreSQL은 각 테이블에 제공됩니다
나는이 열로 구성 Sendings
라는 테이블을 가지고있다. 보내는 object_id는 사용자 지정 식별자이며 형식 및 destinatary ...이 특정 질문에 대해 정말로 중요하지 않습니다.
이
테이블 데이터와 같을 것이다 방법의 예입니다 :id sending_object_id type destinatary
1 1 1 A7
2 1 1 B1
3 2 2 A1
4 2 2 A2
5 3 1 B8
6 4 1 N1
같은 당신이 볼 수있는 "object_id
은"여러 destinataries 보낼 수 있습니다. 이제 두 개의 서로 다른 컴퓨터를 사용하는 두 명의 서로 다른 사용자가을 새로 보내는 을 삽입하려고하면 동기화 문제가 발생합니다.
사용자 A은 새 송신 정보를 도입하고 DB 엔진은 SelectMax(sending_object_id)
을 작성하여 레지스트리에 대한 새 sending_object_id를 작성합니다.
동시에 사용자 B는 새로운 만들고, 전송 소개 다른 SelectMax(sending_object_id).
sending_object_id
의 중복 피할 수있는 방법 ?
미리 감사드립니다.
테이블을 잠그는 더 좋은 방법은 무엇입니까? 그리고 시퀀스를 작성하면 첫 번째 삽입에만 호출 할 수 있습니까? (sending_object_id는 동일한 일련의 전송에 대해 반복 될 수 있음). 사전에 감사드립니다 –
배치의 시작 부분에서 응용 프로그램의 nextval()을 호출하면 결과를 무시하고 삽입에 currval()을 사용합니다. 그런 식으로 그들은 모두 새로운 (동일한) 가치를 지닙니다. –