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

Вниз

Подскажите, а как пользоваться with lock в FB?   Найти похожие ветки 

 
antoxa2005   (2006-06-28 15:24) [0]

Запускаю с одном приложении select * from mytable where id=2 with lock, во второй программе делаю тоже самое программа просто виснет. Как мне узнать, что запись заблокирована т.е. ее кто-то редактирует.


 
Sergey13 ©   (2006-06-28 15:33) [1]

http://www.ibase.ru/devinfo/ibtrans.htm


 
Desdechado ©   (2006-06-28 15:38) [2]

> программа просто виснет
первая или вторая?

А вообще в параметрах транзакции по умолчанию стоит WAIT, т.е
WAIT [Default] Specifies that a transaction wait for access if it encounters a lock conflict with another transaction
Что в переводе - будет ожидать, пока блокировка будет снята.


 
Desdechado ©   (2006-06-28 15:39) [3]

Тебе, видимо, NO WAIT нужно.


 
antoxa2005   (2006-06-28 18:58) [4]

А как это прописать. И где по умолчанию стоит WAIT сво-во param пустое.


 
unknown ©   (2006-06-28 19:56) [5]


> antoxa2005   (28.06.06 18:58) [4]

Если мышкой 2 раза щелкнуть на компоненте TIBTransaction, то вылезет
редактор параметров, в нем ставим галочку "Read committed"
или ручками пишем в параметры
read_committed
rec_version
nowait


 
antoxa2005   (2006-06-29 04:04) [6]

Открываю IBDataSet, вижу данные в DBGrid, начинаю править( запись с IDSPRKLIENT=2) -> IBDataSet переходит в состояние редактирования.

Открываю запрос IBQuery1 с SQL текстом:

SELECT *
FROM NEW_TABLE
WHERE IDSPRKLIENT=2
FOR UPDATE WITH LOCK

Ни чего не происходит, т.е. он не сообщает, что запись блокирвана.

Как же узнать, находится ли запись в процессе изменения?


 
ЮЮ ©   (2006-06-29 07:35) [7]


> т.е. он не сообщает, что запись блокирвана.


А с чего она заблокирована? Вот данный запрос её заблокировал. А состояние редактирования в IBDataSet никак не отражает состояние записи на сервере.

З.Ы. какого вообще следить за тем, что кто-то изменяет запись, которую хочешь изменить другой пользователь? Чем эта ситуация опасней той, что 1ый пользователь секунду назад изменил запись, а 2-ой этого и не заметил?


 
antoxa2005   (2006-06-29 07:44) [8]

Если один открыл на изменение, другой открыл изменил и сохранил, то "один" при сохранении получает ошибку ...lock....


 
ЮЮ ©   (2006-06-29 08:09) [9]

А почему один в столь невыгодном положении, потому что 2-ой шустрее?

А как ситуация, о которой я спросил чуть выше:
1 открыл изменил сохранил. 2 все равно не увидит изменений и изменит так, как считает нужным. 1 при этои не увидит изменений сделанных 2, если, конечно,  IBDataSet не будет обновлен.

З.Ы. Не должно у двух пользователей системы возникать желания изменять одну и ту же запись, причем совершенно разными данными.  А если так поставлены дела в консерватории, то чего замарачиваться


 
ЮЮ ©   (2006-06-29 08:38) [10]

Если один открыл на изменение, другой открыл изменил и сохранил, то "один" при сохранении получает ошибку ...lock....

Это так работает или так хочется?

Если хочится, тогда уж логичнее было бы при переводе IBDataSet в dsEdit выполнять тот самый  IBQuery1, тем самым проверяя "занята" запись или нет и  позволять редактировать только если "свободна".

А если так работает, то, очевидно надо что-то ещё отправлять серверу, чтобы снять это самое FOR UPDATE WITH LOCK


 
Jeer ©   (2006-06-29 14:14) [11]

Повторю из соседней ветки:

http://www.ibase.ru/devinfo/pslock.htm
http://www.ibase.ru/devinfo/plocks.htm


 
Виталий Панасенко   (2006-06-29 14:34) [12]

to antoxa2005 - скажи мне, какая разница в такой ситуации: пользователь 1 менят значение в записи. а после этого пользователь 2 меняет эту же запись через 0,0001 секунды или 1 мунуту ? или 1000000 лет ? что от этого меняется ?"кто последний, тот и папа"... а описання тобой ситуация возможна при наличии конкретного бардака в организации делопроизводства, когда на стол к разным операторам попадают документы по коррекции существующих, с разными условиями(при чем одного и того же)...


 
antoxa2005   (2006-06-29 15:00) [13]


> to antoxa2005 - скажи мне, какая разница в такой ситуации:
>  пользователь 1 менят значение в записи. а после этого пользователь
> 2 меняет эту же запись через 0,0001 секунды или 1 мунуту
> ? или 1000000 лет ? что от этого меняется ?"кто последний,
>  тот и папа"... а описання тобой ситуация возможна при наличии
> конкретного бардака в организации делопроизводства, когда
> на стол к разным операторам попадают документы по коррекции
> существующих, с разными условиями(при чем одного и того
> же)...

Это вразумляет!



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

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

Наверх




Память: 0.5 MB
Время: 0.044 c
15-1155342176
belly_tiamat
2006-08-12 04:22
2006.09.10
Протокол HILTI дальномер PD28


15-1155142507
Джо
2006-08-09 20:55
2006.09.10
MIDlet Pascal — вопли и жалобы


1-1153808383
atruhin
2006-07-25 10:19
2006.09.10
Модальное окно в MDI приложении


15-1155914187
DesWind
2006-08-18 19:16
2006.09.10
Как вы относитесь к технике?


2-1155950019
Mrakk
2006-08-19 05:13
2006.09.10
Открыть каталог в opendialog