여러 사용자가 엔티티에 대한 정보를 편집 할 수있는 데이터베이스를 사용하여 응용 프로그램을 만들려고합니다.사용자가 데이터를 입력하는 동안 SQL 행 잠금 C#
tldr : 사용자가 C#에서 정보를 편집하는 동안 데이터베이스의 행을 잠그는 방법.
쿼리가 실행되는 동안 데이터베이스에서 레코드 잠그기에 대한 조사를했습니다. 내가 주로 보는 부분은 begin transaction
과 commit transaction
입니다. 그러나 이것은 쿼리가 실행되는 시간보다 오래 잠겨 야하기 때문에 내 필요에 맞지 않습니다.
user1이 (양식 응용 프로그램에서 텍스트 상자를 채우는 C#으로) 레코드를 편집하는 경우 편집이 끝날 때까지 해당 행이 잠겨 있어야합니다. 동시에 user2는 동일한 레코드를 편집하려고 할 수 있습니다. user1이 완료되면 모든 것이 정상이지만 user2가 끝나면 ether는 더 이상 존재하지 않는 레코드 (이름)에 대해 다시 덮어 쓰거나 오류를 반환합니다.
간단한 해결책은 사용자가 행을 편집 할 수 있는지에 따라 IsLocked
열을 추가하는 것입니다. 그러나 어떤 이유로 응용 프로그램이 충돌하거나 사용자가 작업 관리자에서 프로세스를 중지하면 행이 영원히 잠 깁니다. (또는이 문제가 발생하는 동안 여전히 코드를 실행할 수있는 방법이 있습니까?)
또 다른 방법은 commit transaction
없이 쿼리를 실행하는 것입니다. 이를 위해서는 연결을 열어 두어야한다고 생각합니다. 그렇지 않으면 연결이 끊어집니다. 개방형 연결을 유지하는 것은 응용 프로그램을 실행하는 동안 나에게 좋은 생각이 아닌 것 같은가요?
사이드 노트 : 제목에서 (my) sql은 내가 어느 것을 사용할 지 잘 모르니까요.
시간 동안 Thx!