"Скопировал запрос в приглашение oracle Sql и выполнил его, выдав ошибку триггера." Поскольку сеанс ADO не сообщает об ошибке, возможно, ошибка триггера вводит в заблуждение. Это может быть просто проверка строк «Эй, вам не разрешено вставлять в эту таблицу, кроме приложения».
«Ошибка не возникает при вставке в таблицу оракулов, поэтому мы не можем ее зарегистрировать или предпринять какие-либо действия».
Если ошибка не возникла во время вставки, она МОЖЕТ быть вызвана во время фиксации. Отсроченные ограничения и материализованные представления могут дать это.
Гипотетически, я мог бы воспроизвести ваш опыт следующим образом:
1. Создайте таблицу tab_a с отложенным ограничением, изначально отложенным (например, val_a> 10)
2. Сеанс ADO вставляет строку, нарушающую ограничение, но не вызывает ошибки, поскольку ограничение отложено
3. Выполняется фиксация, возникает исключение нарушения ограничения, и транзакция откатывается вместо фиксации.
Посмотрите, не хотите ли вы допустить ошибку в коммите.
Это может быть что-то еще позже в транзакции, что приводит к откату всей транзакции (например, тупик). Трассировка сессии была бы хорошей. В противном случае посмотрите на триггер SERVERERROR на пользователе, чтобы зарегистрировать ошибку (например, в файле, чтобы она не откатывалась)
http://download -west.oracle.com / Docs / кд / B19306_01 / server.102 / b14200 / statements_7004.htm # i2153530