2009-12-24 5 views
0

사실, 문제는 다음과 같습니다. -
저는 테이블이 있는데, Payments라고합니다. 레코드를 검색하고보고 편집하기 위해 GUI를 거의 제공하지 않았습니다. 이제 사용자가 레코드를 편집하려고 시도하는 경우 일부 특정 작업을 수행합니다. 처리에는 1 분이 소요됩니다. 그런 다음 다른 사용자가 동일한 레코드에서 특정 작업을 수행 할 수 없어야합니다. 테이블에서 레코드를 잠그기위한 올바른/좋은 접근 방법은 무엇입니까?

Traditional approach of doing this is, have a column in the table, say _isLocked_. and whenever user is performing that action it should change the value of said column to, say, true. Once the process is completed it should reset the value of the column. Also, just before someone tries to perform the action, it should check the value of the column and notifies the user if the record is locked.

같은이 할 어떤 다른 접근 있습니까?

답변

2

SELECT FOR UPDATE가 길입니다. 우리는 이것을 사용하여 이런 종류의 행동을 취합니다.

2

Vinegar said, SELECT FOR UPDATE으로 - 그의 대답에 동의하지 광산은

사용자가 실제로 행을 편집하고자 할 때 알고 있는지 확인합니다 :)하고, 그/그녀가 완료되면. 응용 프로그램에 따라 사용자가 수정을 수행 한 다음 확인/취소 할 수있는 별도의 창을 열 수 있으므로 COMMIT/ROLLBACK을 수행 할 수 있습니다.

동일한 행을 변경하려고하는 다른 사용자가 고정 된 응용 프로그램을 보지 않아야하며 잠금이 해제 될 때까지 기다려야합니다.

관련 문제