Не удерживайте транзакцию для этого. Вам потребуется:
- Открытое соединение
- Начать транзакцию
- Выбрать запись для редактирования (= заблокировать запись)
- Подождите, пока пользователь завершит редактирование
- Передать изменения
- Закрыть соединение
Как долго пользователь может редактировать запись? Что произойдет, если пользователь заблокирует записи и отправится на обед? Соединение не должно удерживаться пользователем, а транзакция должна быть максимально короткой. Вся отдельная часть состоит в том, что мы говорим о ASP.NET, где вам придется хранить соединение в сеансе, и если пользователь не фиксирует изменения, соединение будет утечку - у вас скоро закончится соединение.
Это целое может считаться совершенно плохим дизайном и тем, что вы никогда не должны делать!
Добавить новый столбец в вашу таблицу: LockedBy
(вы также можете добавить LockedAt
). Изменяйте эти столбцы в транзакции только тогда, когда пользователь хочет редактировать запись. Другие пользователи не смогут переключать записи в режим редактирования, когда эти столбцы заполнены. После того, как пользователь внесёт изменения, очистите эти столбцы.
У вас будет одна проблема - вы должны разблокировать записи, если пользователь отменяет изменения, но что если пользователь просто закроет свой браузер? Это потребует некоторой работы, которая будет регулярно запускать и разблокировать записи, заблокированные в течение длительного времени (причина для второго столбца). Вы можете запустить такое задание в агенте SQL.