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

Вниз

Подскажите, а как пользоваться 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.045 c
2-1156348469
NikIta88
2006-08-23 19:54
2006.09.10
Не убивается таймер после цикла сообщений


2-1156101306
Vazelin
2006-08-20 23:15
2006.09.10
Распаковка проги


3-1151744812
Lis'S
2006-07-01 13:06
2006.09.10
Пробелы в таблицах БД


1-1153935791
Calibr
2006-07-26 21:43
2006.09.10
Прозрачность


2-1155812347
ArtemESC
2006-08-17 14:59
2006.09.10
Обязателен ли SysUtils в





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