Триггер не срабатывает для одного конкретного столбца CLOB

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

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

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


person A9S6    schedule 09.03.2016    source источник


Ответы (1)


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

Ваш триггер действительно работает — КОГДА он срабатывает!

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

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

person J. Chomel    schedule 03.05.2016