我正在尝试使用C#应用程序侦听Oracle数据库(插入,更新,删除事件),该C#应用程序用于生成用于自定义分析目的的数据。
实际上,我正在使用OracleDependency对象及其OnChange事件处理程序。 我使用OracleCommand(“ SELECT * FROM ...”)注册表,并使用AddCommandDependency将其添加。
它可以正常工作,但是对于删除事件,我无法检索源数据,因为该事件仅拥有rowid(而不是PK),并且在提交后被触发。我看到将RAWID值存储在收集的数据中(插入事件期间,删除事件之后,之后使用)不是一个好的解决方案,因为它的值可以更改。
所以我有不同的问题: -是否可以检索主键? -还是要在事件之前触发事件(例如“删除前触发”)? -此外,是否可以在没有提交的情况下触发事件?
我有另一个想法,为所有表创建触发器,并将历史记录数据插入历史记录表。但是它可能需要非常大的内存才能存储。
您有解决此问题的想法吗?
谢谢!