Показать сообщение отдельно
Старый 05.04.2004, 19:44   #1  
Pavlo AKA Panok is offline
Pavlo AKA Panok
Участник
 
64 / 10 (1) +
Регистрация: 01.05.2002
Адрес: Москва
Проверка на наличие открытой транзакции
Добрый день!

Есть ли возможность проверить в каком то месте открыта ли транзакция в момент выполнения кода или нет.

Задача такая: Есть процедура импорта каталога товаров (примерно 150 000 позиций).

При импорте одной записи производится заполнение приблизительно 10-15 таблиц. Уже тестировалось, что если в ttsbegin/ttscommit заключать каждый инсерт то процедура импорта делается в десятки раз медленнее. Т.о. возникает необходимость в одном обрамлении всего цикла заполнения всех таблиц (ничего страшного, если в случае ошибки пропадут все данные - во первых данные не сырые, подгтовленные, а во-вторых - выгода в скорости ощутимее временных потерь в случае такой неожиданной ошибки).

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

Пишите мнения о подходее вообще и о поставленной проблеме в частности. Чтонибудь типа isTransactionOpen()