我正在为执行插入/更新/删除记录的用户 ID 登录的 Web 应用程序执行审计跟踪。
插入/更新触发器没有问题。但是,对于删除触发器,数据库将不知道执行删除的“用户 ID”。
我正在使用带有连接池的 oracle 数据库和 jdbc。
如何将“用户 ID”传递给删除触发器?
看看Audit4j。它支持对应用程序审计的开箱即用支持。
你在使用 JPA 吗?如果是这样,您使用的是 EclipseLink 吗?如果是这样,这可以在没有触发器的情况下完成吗?
如果您对所有三个答案的回答都是肯定的,我有没有为您提供答案。看看EclipseLink 的历史表功能。我过去曾成功地使用它来实施审计跟踪。
否则,通过设置状态列来考虑“软删除”。您只需将行状态设置为禁用,而不是从数据库中物理删除行。在您的 Select 查询中,只需添加“and where status != disabled”。