plsql中DML命令的系统级触发器

plsql中DML命令的系统级触发器,plsql,Plsql,假设数据库中有n个表。无论在数据库中的任何表中发生什么样的插入、更新、删除操作,都必须捕获到一个名为“Audit_Trail”的表中,我们在Audit Trail表中有以下列 服务器名称 在某日 当时 表名称 列名 行动 旧价值 新价值 需要捕获表、列、日期和时间的服务器。此外,“Action”列跟踪某个操作是插入、更新还是删除,我们还必须捕获旧值和新值 那么最好的方法是什么呢?我们是否可以创建一个数据库级触发器,它可以在任何插入、更新或删除时触发触发器 最好的方法是使用Oracle自己的审核功

假设数据库中有n个表。无论在数据库中的任何表中发生什么样的插入、更新、删除操作,都必须捕获到一个名为“Audit_Trail”的表中,我们在Audit Trail表中有以下列

服务器名称 在某日 当时 表名称 列名 行动 旧价值 新价值

需要捕获表、列、日期和时间的服务器。此外,“Action”列跟踪某个操作是插入、更新还是删除,我们还必须捕获旧值和新值


那么最好的方法是什么呢?我们是否可以创建一个数据库级触发器,它可以在任何插入、更新或删除时触发触发器

最好的方法是使用Oracle自己的审核功能

AUDIT ALL ON DEFAULT BY ACCESS;

作为对评论的回应


想要审核对数据库中的表所做的每一个更改并没有什么不寻常的地方——因此系统中已经提供了相应的功能。它比使用触发器更好,因为它不能被轻易绕过。但是,如果您想使用这种预先提供的、健壮的、易于使用的功能,您可能需要在特定需求上稍作妥协,但最终的结果将是一个优越的解决方案,它将与数千个其他Oracle系统共同使用代码和配置。

假设数据库中有n个表。无论在数据库中的任何表中发生什么样的插入、更新、删除操作,都必须捕获到一个名为“Audit_Trail”的表中,我们在Audit Trail表中有以下列。我想用这种方式,如果我能在一个单独的表服务器名在日期在时间表名列名动作旧值新值,我可以不这样做吗