powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / о транзакциях и блокировках
4 сообщений из 4, страница 1 из 1
о транзакциях и блокировках
    #32222242
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет все!

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

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

основные уровни блокировки транзакций по привычке смотрю здесь .

пример, когда нужно это все

напрмиер, есть две таблицы

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
объект
======
код
тип

данные
======
код
тип
данное


например, я меняю поле тип в объекте, и в его данных. порядок такой:

начало транзакции
меняю тип в таблице объект
для всех данных, где код объекта равен данному, меняю тип на новый
конец транзакции

(триггером низзя, условие задачи ;)

насколько я понимаю, после того, как я поменяю тип в объекте, таблица будет заблокирована на запись, но не на чтение. Однако читаться будет старое значение (уровень изоляции ReadCommitted)

в этот момент посыпались новые данные об объекте, и всякия другие транзакции записали в таблицу данные новые строки, но со старым типом (тип они прочитали в таблице объект)

после окончания транзакции процедуры, которая меняет типы и объекта и его данных, оказывается много данных не того типа :(

если сделать ReadUncommitted, может случиться, что наша первая транзакция зароллбэкится, и опять будет много данных не того типа.

а вот если бы таблица была заблокирована для чтения, транзакции вставок подождали бы, пока завершится главная транзакция, и вставили бы данные.

мне был предложен способ с флажком в отдельной таблице. при начала работы главная транакция (изменения типа) пишет что-нибудь в некую третью таблицу, а транзакции вставки данных тоже пытаются туда писать. транзакции вставки ждут, пока не разблокируется на запись эта третья таблица, тоьлко потом делают свои вставки.

как это сделать по-другому?

а на Джаве (JayBird)? ;)))
...
Рейтинг: 0 / 0
о транзакциях и блокировках
    #32222474
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пример утрирован, ессно. таблиц "данное" несколько. это развитие проблемы, с которой я обращался здесь (там же мне Gold посоветовал делать не в триггере а в хп)
...
Рейтинг: 0 / 0
о транзакциях и блокировках
    #32222480
Фотография Alexey Kovyazin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Read uncommited нет в IB.

Из описания проблемы ничего не понял, хотя старался.
Может, чуть подробнее - таблицы, запросы, код какой-нить привести?

С уважением,
Алексей.
...
Рейтинг: 0 / 0
о транзакциях и блокировках
    #32222500
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я наоборот пытался попрощее...
код то я еще не писал, сначала пытаюсь подумать ;)
опишу более подробно попозже.
спасибо;)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / о транзакциях и блокировках
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]