2016-03-09 8 views
1

У нас есть устаревшее приложение на C++, которое подключается к базе данных Oracle 11g. Приложение использует библиотеку Microsoft Data Access Objects (DAO), чтобы разрешить просмотр и изменение записей. У нас также есть триггеры на таблицах для отслеживания обновлений и вставок строк.Триггер не срабатывает для одной конкретной строки CLOB

Проблема заключается в том, что триггеры не срабатывают для столбцов CLOB, которые мы имеем в наших таблицах. Он запускается для других столбцов, но для этого одного столбца CLOB он не срабатывает во время обновления или во время удаления. Я добавил триггер для всех трех: UPDATE, INSERT и DELETE.

Есть ли опция, управляющая триггерами для CLOB? Или какие-то другие настройки, которые могут повлиять на это? Любые идеи, где я должен искать решение?

ответ

0

Я нашел возможное объяснение для этого триггера негор:

Ваш триггер на самом деле работает - когда его увольняют!

Проблема в том, что вы не обновляете таблицу, когда вы устанавливаете значение lob. Возможно, вы модифицируете содержимое lob, но - и это ключ - вы НЕ изменяете локатор лоб в самой таблице. Значения строк таблицы не меняется, то триггер не срабатывает для dbms_lob.copy (или писать, или обрезать, или добавить, или ...)

Я думаю, что решение, предложенное here at askTom требует, чтобы конкретная процедура, но я не совсем понимаю ее.