Я собираюсь создать приложение с использованием базы данных, где нескольким пользователям разрешено редактировать информацию об объекте.(мой) SQL Row Lock во время ввода данных C#
tldr: Как заблокировать строку в базе данных, когда пользователь редактирует ее информацию на C#.
Я провел некоторое исследование по блокировке записи в базе данных во время выполнения запроса. В основном я вижу блокировку с begin transaction
и commit transaction
. Однако это не устраивает мои потребности, потому что он должен быть заблокирован дольше, чем время выполнения запроса.
Если пользователь1 редактирует запись (в C#, с приложением формы, заполняя некоторые текстовые поля), тогда мне нужно, чтобы эта строка была заблокирована до тех пор, пока он не закончит редактирование. Потому что в то же время пользователь2 может попытаться отредактировать одну и ту же запись. К тому времени, когда пользователь1 будет выполнен, все будет хорошо, но когда пользователь2 закончит, он перезаписывает или получает ошибки в записи (имя), которое он искал, больше не существует.
Простым решением было бы добавить столбец с IsLocked
, в зависимости от того, что пользователь может редактировать строку. Но когда по какой-то причине приложение сбой или пользовательская сила останавливает процесс в диспетчере задач, строка будет заблокирована навсегда. (или есть еще способ выполнить код, пока это происходит?)
Другим методом было бы выполнить запрос без commit transaction
. Для этого, я считаю, вы должны держать соединение открытым, иначе оно будет прекращено. Сохранение открытого соединения не кажется мне хорошей идеей при запуске приложения или не так ли?
сторона примечание: название говорит (мой) sql, потому что я не совсем уверен, какой из них я буду использовать.
Thx для вашего времени!