![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Блокировка записей [D6, IB6.x]
me2 © (2003-03-13 09:09:00)Народ, объясните пожалуйста как устанавливается блокировка записи в многопользовательском приложении, т.е. если я редактирую запись никто другой ее редактировать не сможет.
Johnmen (2003-03-13 12:14:00) [1]>SergeyNew (13.03.03 11:46)
>...другой пользователь уже не может после этого изменять запись
Очень даже может ! Просто надо определиться со стартом и завершением транзакций.
>Чтобы редактировать эту надо выйти из проги и зайти в нее опять
Значит прога написана кривовато...:)
SergeyNew (2003-03-13 11:46:00) [2]2zacho
Если один пользователь выполняет Transaction.CommitRetaining то другой пользователь уже не может после этого изменять запись, т.к. выдается ошибка. Чтобы редактировать эту надо выйти из проги и зайти в нее опять. Если же делать Transaction.RollBackRetaining, то другой юзер может редактировать запись. Что делать?
zacho (2003-03-13 11:06:00) [3]Получишь от сервера сообщение об ошибке. Вот его и обрабатывай.
me2 (2003-03-13 09:56:00) [4]А как сообщить пользователю, что в данный момент запись отредактировать неудалось, а то он подумает, что внес изменения, а на самом деле - нет.
zacho (2003-03-13 09:20:00) [5]Почитай на www.ibase.ru и в документации о транзакциях, уровнях изоляции и т.п.
Коротко: если в контексте какой-либо транзакции были изменены записи, то до завершения этой транзакции другие транзакции изменить эти записи не смогут. Если тебе нужно заблокировать запись, можно сделать "холостой" апдейт, т.е.UPDATE MYTABLE SET MYFIELD=MYFIELD WHERE ...