Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.02.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.007 c
4-63912
Uncle Archi
2003-01-08 21:52
2003.02.20
CD-ROM


3-63541
mate
2003-02-03 10:04
2003.02.20
DBGrid и MouseMove


3-63581
helen
2003-02-04 11:10
2003.02.20
Индексы баз Paradox


3-63594
Step[B.M.]
2003-02-04 11:07
2003.02.20
Поиск ближайшего соответствия через IBTable


6-63722
MasterA
2003-01-02 09:39
2003.02.20
Web-конференция





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский