Я пытаюсь прослушивать базу данных Oracle (вставлять, обновлять, удалять события) с помощью приложения C #, которое используется для получения данных для пользовательских аналитических целей.
На самом деле я использую объект OracleDependency и его обработчик событий OnChange.
Я регистрирую таблицы в OracleCommand («SELECT * FROM ...») и добавляю их в AddCommandDependency.
Это работает, но для событий удаления я не могу получить исходные данные, так как событие владеет только rowid (а не PK) и запускается после фиксации. Я видел, что сохранение значения RAWID в собранных данных (во время события вставки, которое будет использоваться после, во время события удаления) не является хорошим решением, так как его значение может измениться.
Так что у меня есть разные вопросы:
- Можно ли получить первичный ключ?
- Или запустить событие непосредственно перед (как «триггеры перед удалением»)?
- Кроме того, возможно ли запустить событие без коммита?
У меня есть еще одна идея: создать триггеры для всех таблиц и вставить данные истории в таблицу истории. Но для его хранения может потребоваться очень большой объем памяти.
У вас есть идея решить эту проблему?
Спасибо!