|
|
|
о транзакциях и блокировках
|
|||
|---|---|---|---|
|
#18+
Привет все! подскжите мне еще одну малость. возможно она касается транзакций, совершенно точно - блокировок. мне нужно, чтобы при изменении данных в одной таблице, никакая другая транзакция не смогла прочитать эту таблицу, а ждала бы, пока первая не закоммитится или не зароллбэкится. основные уровни блокировки транзакций по привычке смотрю здесь . пример, когда нужно это все напрмиер, есть две таблицы Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. например, я меняю поле тип в объекте, и в его данных. порядок такой: начало транзакции меняю тип в таблице объект для всех данных, где код объекта равен данному, меняю тип на новый конец транзакции (триггером низзя, условие задачи ;) насколько я понимаю, после того, как я поменяю тип в объекте, таблица будет заблокирована на запись, но не на чтение. Однако читаться будет старое значение (уровень изоляции ReadCommitted) в этот момент посыпались новые данные об объекте, и всякия другие транзакции записали в таблицу данные новые строки, но со старым типом (тип они прочитали в таблице объект) после окончания транзакции процедуры, которая меняет типы и объекта и его данных, оказывается много данных не того типа :( если сделать ReadUncommitted, может случиться, что наша первая транзакция зароллбэкится, и опять будет много данных не того типа. а вот если бы таблица была заблокирована для чтения, транзакции вставок подождали бы, пока завершится главная транзакция, и вставили бы данные. мне был предложен способ с флажком в отдельной таблице. при начала работы главная транакция (изменения типа) пишет что-нибудь в некую третью таблицу, а транзакции вставки данных тоже пытаются туда писать. транзакции вставки ждут, пока не разблокируется на запись эта третья таблица, тоьлко потом делают свои вставки. как это сделать по-другому? а на Джаве (JayBird)? ;))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 13:25 |
|
||
|
о транзакциях и блокировках
|
|||
|---|---|---|---|
|
#18+
пример утрирован, ессно. таблиц "данное" несколько. это развитие проблемы, с которой я обращался здесь (там же мне Gold посоветовал делать не в триггере а в хп) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 15:20 |
|
||
|
о транзакциях и блокировках
|
|||
|---|---|---|---|
|
#18+
Read uncommited нет в IB. Из описания проблемы ничего не понял, хотя старался. Может, чуть подробнее - таблицы, запросы, код какой-нить привести? С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2003, 15:26 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=510&tid=1580185]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 359ms |

| 0 / 0 |
