![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Разные ли будут транзакции? [D7, IB6.x]
linx © (2003-10-02 05:59:00)
Народ, неприятная мысль меня посетила впредверии сдачи проекта заказчику. У меня написана база данных под InterBase, с использованием компонентов IBTable, IBQuery, IBDataBase, IBTransaction. При выполнении неких операций всегда задействована связка IBQuery(IBTable)-IBTransaction-IBDataBase. Операций в принципе достаточно много и поэтому при динамических запросах я зачастую использую одну и ту же транзакцию. Внутри одного клиентского рабочего места конфликтов связанных с использованием одной транзакции не возникает. Я специально следил за этим. Но что будет, когда запустятся 2 клиентских рабочих места? Не получится-ли так, что в момент, когда один пользователь создает нового абонента, другой будет производить другую операцию, используя ту же транзакцию? И внесет тем самым ошибки в данные, а может даже и к аварийному завершению операций. Ведь названия у транзакций одинаковые. Внутри одного клиентского места перекрестного использования транзакций (или, другими словами, одновременного выполнения двух конфликтующих операций)нет, а вот при выполнении 2х и более приложений... Это можно проверить, конечно, но мне бы очено хотелось услышать мнения людей, которые уже сталкивались с этой проблемой.
Deniz (2003-10-02 08:29:00) [1]
"... Ведь названия у транзакций одинаковые ..."
В реальности такой проблемы НЕТ, и названия используются только для твоего приложения, при запуске более 1 приложения, даже на одном копьютере, свои транзакции. Start + Commit несколько раз и каждый раз будет НОВОЕ значение идентификатора транзакций в БД. Если правильно(по логике программы) расставил уровни изоляции, то проблем не будет даже с 100 приложениями