Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.20;
Скачать: CL | DM;

Вниз

Блокировка записи   Найти похожие ветки 

 
nick-from ©   (2003-02-03 10:25) [0]

Есть таблица, записи которой обновляются (добавляются и удаляются) с помощью соответствующих хранимых процедур.
Чтобы обновить запись, пользователь выбирает ее в DbGrid"е и нажимает кнопку "Изменить". (В DbGrid"е записи менять нельзя - так как показаны не все поля записей, да и не люблю я так :) ).
Появляется новая форма, содержащая Edit"ы соответствующие полям записи. Пользователь изменяет их значения и по нажатию кнопки "Ok" вызывается ХП на изменение.
Вопрос в том как блокировать запись после нажатия "Изменить", чтобы пока пользователь А заполнял поля, пользователь В не изменил (или удалил) эту вот запись?


 
stone ©   (2003-02-03 10:35) [1]

Установить соответствующий уровень разграничения транзакций


 
Alexandr ©   (2003-02-03 10:48) [2]

1) транзакции тут как бы нипричем. (если не считать очень редкий случай блокировки всех таблицы)
2) Перед edit надо просто сделать холостой апдейт в той транзакции, в которой потом пойдет изменение.
3) Но учти, что если пользователь нажмет едит, произойдет этот холостой апдейт, а потом свалит куда-нибудь, то тогда долго все будут ругать и его и программиста...
Поэтому делают немного по-другому...


 
passm ©   (2003-02-03 10:54) [3]

Alexandr © (03.02.03 10:48)> Да. Нехорошо получится :)
Может, лучше будет показать пользователю сообщение типа: "Пока Вы тут по окошку лазали, Вашу запись успели изменить/удалить :)"


 
Alexandr ©   (2003-02-03 11:05) [4]

вот вот. И показать что на что поменяли.
После чего предложить пользователю выбор: оставить, провести свои изменения и прочее...


 
nick-from ©   (2003-02-03 11:17) [5]

2 Alexandr © (03.02.03 10:48)
> Поэтому делают немного по-другому...

Расскажи пожалуйста как делают


 
Alexandr ©   (2003-02-03 11:26) [6]

а вот дальше обсуждение этого и идет... Ты прочитал?


 
nick-from ©   (2003-02-03 11:35) [7]

Ну да. Типа, например, можно на ту форму повесить Label, и отслеживать с помощью SIBfibEventAlerter евенты. Если пришел к примеру евент на удаление, то можно запустить Select запрос и если он не вернет нужной записи, та label скажет, что мол уже удалили твою запись, батенька. А вот с обновлением уже, наверное, посложнее...
Но что-то так мне не особо нравится - толкотни много :)
Можт еще как можно ?


 
Anatoly Podgoretsky ©   (2003-02-03 11:41) [8]

И уехал в командировку, а кабинет закрыл.


 
Alexandr ©   (2003-02-03 12:28) [9]


> Но что-то так мне не особо нравится - толкотни много :)
> Можт еще как можно ?


ну можно еще вообще нихрена не делать. Пойти например водки нажраться. И вообще забить на эту проблему.


 
jocko   (2003-02-03 12:32) [10]

может я глупость спрошу, а что в IB полей timestamp или чего в замен не существует? (в MS SQL есть)


 
Alexandr ©   (2003-02-03 12:39) [11]

а при чем тут timeStamp?
кстати, это есть.
Или что ты имел в виду?


 
nick-from ©   (2003-02-03 13:05) [12]

2 Alexandr © (03.02.03 12:28)

ok
Тогда подскажи пожалуйста такую штуку. Все вроде ясно как делать только вот как "показать что на что поменяли" т.е. как это сделать проще можно, по принципу Select см. nick-from (03.02.03 11:35) или еще как?


 
Alexandr ©   (2003-02-03 13:14) [13]

ну как-как.
Вот взять перечитать эту строку по первичному ключу и сравнить с тем, что собираемся писать.


 
nick-from ©   (2003-02-03 13:26) [14]

ok
это и хотел услышать
всем спасибо


 
Alexandr ©   (2003-02-03 13:30) [15]

да, только транзакция нужна snapshot в которой обновить запись и потом апдейт ее делать.


 
nick-from ©   (2003-02-03 14:24) [16]

???
объясни тупому, если не трудно


 
Alexandr ©   (2003-02-03 14:35) [17]

так эта...
Прочитай про snapshot.
Короче это чтоб никто не изменил между твоим проверочным чтением и записью.


 
nick-from ©   (2003-02-03 14:49) [18]

Ну спасибо тебе, понял :)))))))))



Страницы: 1 вся ветка

Текущий архив: 2003.02.20;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.016 c
3-63532
Гость
2003-02-01 17:20
2003.02.20
Восстановление удалённых записей


14-63820
shusha
2003-02-04 14:46
2003.02.20
CoolTrayIcon v.4.0.1


14-63793
Г.Каспаров
2003-02-03 17:31
2003.02.20
Ищу кряк к DeepBlue


3-63478
Nick-From
2003-02-04 16:58
2003.02.20
Процедура сравнения


6-63729
Evgeniy_k
2002-12-28 10:15
2003.02.20
TWebBrowser