2014-10-22 3 views
0

내 페이지에는 레코드 목록이있는 테이블이 있어야합니다. 사용자가 하나의 레코드를 클릭하면 레코드를 잠그고 개요 화면을 이전에 본 누군가가 레코드를 클릭하려고하면 '이 레코드가 실행 중입니다'라는 메시지가 팝업으로 표시됩니다.jsp 페이지에서 사용자 작업 후 잠금 레코드 및 잠금 해제

내가 누군가를 클릭하고 특정 레코드를 보았을 때 'In prodress'라고 말한 다음 나중에 그 레코드를 닫을 때 'Free'라고 말하면 그 열을 업데이트 할 것이라고 db 테이블에 열을 추가 할 생각을했습니다. 하지만 누군가가 레코드를 선택하고 브라우저를 닫지 않고 바로 닫고 해당 잠금을 해제하면 아무도 해당 레코드를 볼 수 없으면 문제가 발생합니다.

다른 방법으로 구현할 수 있는지 또는 위의 경우에 구현할 수있는 방법을 알려주세요.

조건 1 : 두 명의 사용자가 동시에 로그인 할 때 모두 정상적인 색으로 녹색으로 표시됩니다. 사용자 1이 레코드를 클릭하고 편집을 시작합니다. 이 경우 사용자가 동일한 레코드를 열려고하면 '진행 중'이라는 메시지가 팝업되도록 잠금 장치가 있어야합니다.

조건 2 : 사용자 1은 로그인하고 녹색으로 기록됩니다. 그런 다음 사용자 2가 로그인하여 회색 색상의 동일한 레코드를 봅니다. 이제 그 레코드를 클릭해서는 안됩니다.

+0

X 시간 후에 잠금을 시간 초과 할 수 있습니다. – Thilo

답변

0

당신이 가지고있는 문제는 대개 그렇게하지 않는 이유입니다. 레코드에 하드 록이있는 경우, 최선의 방법은 어떤 종류의 타임 아웃을하는 것입니다. 시간 제한은 응용 프로그램에 따라 다릅니다. 클라이언트가 정기적으로 잠금을 새로 고치게하고 제한 시간을 줄일 수 있습니다.

더 나은 해결책은 전혀 잠그지 않고 누군가가 변경 사항을 저장하기 전에 이미 데이터를 변경했는지 확인하는 것입니다. 이것은 대개 업데이트 할 레코드의 타임 스탬프 또는 버전 번호를 사용하여 수행됩니다. 찾아야 할 개념은 "낙관적 인 잠금"입니다.

그러나 가능한 경우 충돌이 상대적으로 발생하지 않는 경우에만 작동합니다. 콜센터 직원이 고객 기록을 업데이트하는 것은 일반적인 경우입니다. 두 곳의 콜센터 장소가 같은 고객에게 동시에 이야기하는 경우는 거의 없기 때문입니다. 오류가 발생하면 오류가 발생하여 데이터를 다시로드하고 변경해야합니다.