Показать сообщение отдельно
Старый 13.10.2009, 11:29   #6  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от Lemming Посмотреть сообщение
X++:
static void TmpTableTTSTest(Args _args)
{

    TmpABC  tmpABC;
    ;

    try
    {
        tmpABC.ttsbegin();
        tmpABC.ItemId = "Test1";
        tmpABC.RefRecId = 1;
        tmpABC.insert();

        tmpABC.ItemId = "Test2";
        tmpABC.RefRecId = 2;
        tmpABC.insert();

        while select forupdate tmpABC
        {
            tmpABC.ItemId = tmpABC.ItemId + "upd";
            tmpABC.update();
        }

        throw error("Throw");

        tmpABC.ttscommit();
    }
    catch
    {
        while select tmpABC
        {
            info(tmpABC.ItemId);
        }
    }
}
Результат:

Throw
Test1upd
Test2upd

Я как-то не так юзаю соответствующие методы табличного буфера?

upd: Ну да, с ручным абортом работает, но только это не совсем то.
Нет, всё работает штатно, а вы ожидали другого результата?
Вы вызвали ошибку, основная транзакция в БД отвалилась, транзакция же на временной таблице висит по прежнему без изменений. Если вам её тоже нужно откатить, нужно вызвать tmpABC.ttsAbort();
__________________
Zhirenkov Vitaly