![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Транзакции в MS SQL [D6, MSSQL]
dim- © (2004-09-20 00:03:00)В форме редактируются данные из нескольких таблиц (связь один к многим), как сделать чтобы в случае нажатия кнопки отмена отменились все исправления в этих таблицах. На IB просто отменяешь транзакцию и все, а как на MS SQL
dim- (2004-09-20 15:14:00) [1]по поводу чтения это понятно, но если два оператора полезут в одну накладную?
Если я делаю ADOQwery.Edit, то запись не блокируется и на другой машине тоже можно сделать ADOQwery.Edit
sniknik (2004-09-20 12:27:00) [2]зачем? ты же будеш работать с данными (образом) на клиенте, после скинеш обновленные. чем тебе мешает если ктото считает старые данные?
т.е. если какой тормозной оператор, открыл накладную на исправление утром и закрыл вечером, ты предлагаеш на это время запрещать все отчеты? даже если нужны они для старых данных?
блокировка в транзакциях
SET TRANSACTION ISOLATION LEVEL
но до записей оно не "опускается" блокирует датасет.
dim- (2004-09-20 12:01:00) [3]а как тогда блокировать запись которую редактируешь, что бы другие пользователи ее не могли открыть
sniknik (2004-09-20 00:50:00) [4]можно также. стартуеш транзакцию после отменяеш.
но лучше, по моему, не допускать данные к изменению если еще подтверждений не дано (отмена может быть).
менять данные на клиенте, ставиш тип LockType=ltBatchOptimistic, меняеш что угодно а уже после подтверждения на запись делаеш UpdateBatch (заись изменений). по кнопке отмены придется CancelBatch делать, или перечитать данные без записи. (мало ли там юзер возился может обновить нужно)
а транзакции оставить для обеспечения целостности данных.