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

Вниз

Блокирование строки таблицы на время редактирования   Найти похожие ветки 

 
STX   (2006-07-17 15:02) [0]

Добрый день.

FIBPlus + Firebird 2.0

При вызове FIBDataSet.edit, текущая запись автоматом блокируется (poProtectedEdit) от редактирования др. пользователями на время работы транзакции. Но, насколько я знаю такая транзакция нежелательна, т.к. может оказаться слишко длительной.

Я решил использовать для INSERT, UPDATE, DELETE - хранимые процедуры. Но вот проблема - не могу понять как в данном случае заблокировать запись. Ведь пока юзер редактирует значения, кто-нить может вообще удалить запись.


 
StriderMan ©   (2006-07-17 15:08) [1]

можно сделать

UPDATE ТАБЛИЦА SET ПОЛЕ = ПОЛЕ WHERE ID = ЗНАЧЕНИЕ

и не делать Transaction.Commit..


 
STX   (2006-07-17 15:10) [2]

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


 
DrPass ©   (2006-07-17 15:12) [3]


> Но, насколько я знаю такая транзакция нежелательна, т.к.
>  может оказаться слишко длительной.

А какие у тебя еще есть варианты? Ты ж не всю таблицу блокируешь


 
DrPass ©   (2006-07-17 15:12) [4]

...я надеюсь :)


 
StriderMan ©   (2006-07-17 15:19) [5]

..пришло на ум:

сделать триггер, который будет подтягивает ключевое поле строки из какой-нибудь вспомогательной таблички типа LOCKLIST. Соответственно при INSERT"е UPDATE"е и DELETE будет проверяться не изменяется ли строка, которая заблокирована.
Или я велосипед изобретаю? может такое уже есть?


 
STX   (2006-07-17 15:22) [6]


> StriderMan ©   (17.07.06 15:19) [5]
> ..пришло на ум:

------> вилосипед :)
---------------------------------------


 
DrPass ©   (2006-07-17 15:22) [7]


> StriderMan ©   (17.07.06 15:19) [5]

А смысл? Стандартная транзакция read_commited + rec_version, и больше ничего не нужно


 
StriderMan ©   (2006-07-17 15:24) [8]


> DrPass ©   (17.07.06 15:22) [7]
> А смысл? Стандартная транзакция read_commited + rec_version,
>  и больше ничего не нужно

понятное дело, я и сам так делаю всегда. А вот автору ветки не нравится...


 
STX   (2006-07-17 15:28) [9]

Параметры транзакции
write
nowait
rec_version
read_committed



> понятное дело, я и сам так делаю всегда. А вот автору ветки
> не нравится...

Например: Если два пользователя одновременно решили отредактировать одну и туже строку. 1-й изменил+подтвердил. 2-й редактирует уже старые записи, +подтвердил = может получится косяк в НД


 
DrPass ©   (2006-07-17 15:53) [10]


> Если два пользователя одновременно решили отредактировать
> одну и туже строку. 1-й изменил+подтвердил

Первый начал изменять, залочил запись. Второй ждет. Первый подтвердил, послал event, второй обновил у себя и меняет что ему нужно


 
Sergey13 ©   (2006-07-17 16:19) [11]

> [9] STX   (17.07.06 15:28)
> Например: Если два пользователя одновременно решили отредактировать
> одну и туже строку. 1-й изменил+подтвердил. 2-й редактирует
> уже старые записи, +подтвердил = может получится косяк в
> НД

Если 2 юзера одновременно вручную редактируют одну запись - это скорее всего, ИМХО, недоработка проектирования + плохая организация труда в конторе. Подобные изменения (например обновление наличия товара на складе) желательно делать короткими транзакциями, не зависящими от медлительности юзера (например через тригер).


 
Desdechado ©   (2006-07-17 16:52) [12]

> Если 2 юзера одновременно вручную редактируют одну запись
Поддерживаю. Это называется "бардак". Как в организации труда, так и в головах.
Не, конечно, такие ситуации бывают, но это нетипичная ситуация. По моим прикидкам, не более 5%.



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

Форум: "Начинающим";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.012 c
2-1153484990
Itonixxx
2006-07-21 16:29
2006.08.06
Работа со строками


15-1152592598
antonn
2006-07-11 08:36
2006.08.06
вопросик по авибилетам...


2-1152643980
Лёха
2006-07-11 22:53
2006.08.06
Работа с outlook


8-1137972704
clampo
2006-01-23 02:31
2006.08.06
Как юзать PNG


4-1144268716
polyarnik
2006-04-06 00:25
2006.08.06
Открыть Открытый COM порт





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский