2017-11-13 17 views
0

내용을 업데이트하는 동안 다른 사용자가 테이블을 쿼리하지 못하게하려면 어떻게 테이블을 잠글 수 있습니까?MS ACCESS 업데이트 중 차단 테이블 잠금

현재 내 데이터는 테이블을 닦아서 다시 채우는 방식으로 업데이트됩니다. 데이터를 업데이트하는 가장 좋은 방법은 아니지만 원본 데이터에는 레코드 업데이트로 레코드를 수행하는 데 사용할 고유 키가 없습니다. 유일한 방법). 가능성이 희박하지만 가능한 시나리오가 있습니다. 사용자가 업데이트 중간에 테이블에 액세스하여 비어있는 동안 캐치하여 나쁜 정보를 반환 할 수 있습니다.

쿼리하기 전에 DB 업데이트가 완료 될 때까지 대기하는 차단 명령문을 만드는 방법은 SQL (또는 코드) 수준입니까?

답변

1

액세스에는 약간의 잠금 기능이 있습니다. 다른 백엔드에 데이터를 저장하는 경우가 아니라면 데이터베이스 전체 잠금 또는 잠금 없음을 설정할 수 있습니다.

(GUI를 통해도 VBA를 통해도)

테이블의 테이블 구조가 변경되고 있지만, 지금까지의 내가 찾을 수있는, 즉 사용자에게 사용할 수없는 경우 일부 잠금 기능을 설정 테이블 잠금이

ADO와 DAO는 모두 잠김을 지원합니다 (쿼리를 실행할 때 dbDenyRead + dbDenyWrite을 설정하여 DAO에서 IsolationLevel을 설정함으로써 ADO에서). 그러나 짧은 테스트에서 이러한 옵션은 Access에서 전혀 작동하지 않습니다.

+0

그건 내 자신의 파고도 나타났습니다 것 같습니다. 지금은 레코드 나 테이블을 잠그는 필드를 구현하고 있지만 이는 방탄하지 않습니다. 나는 1 년 전에 이것을 연구하고 SQL에서 모든 쿼리를 성공적으로 성공적으로 구현할 수있는 SQL 문을 발견했지만이 문제를 다시 발견하지 못했습니다. – Wobbles

+0

@wobbles 그래도 여러 문장을 연속적으로 실행하려고한다면 트랜잭션을 사용할 수 있습니다. –

+0

여러 사용자간에이를 수행하려는 경우 트랜잭션 잠금이 여러 세션/사용자간에 공유됩니까? – Wobbles