0

我编写了对数据库执行简单/基本操作的 Java/JDBC 代码。我想添加代码,帮助我跟踪该程序何时访问、更新、修改特定数据库等。我正在考虑在我的 DBMS 中创建另一个数据库,其中将为所涉及的每个数据库存储这些详细信息或日志。
这是最好的方法吗?有没有其他方法(最好是简单的)来做到这一点?

编辑-

For now, I am using MySQL. But, I also want my code to work with at least 
Oracle SQL and MS-SQL as well.
4

2 回答 2

1

将“last_modified”列添加到表中然后在表上添加更新触发器以将其设置为数据库当前时间是非常标准的。那么您的应用程序就无需担心了。此外,还经常使用“create_time”,由插入触发器填充。

评论后更新:

似乎您正在寻找审核日志。有些编写应用程序,其中数据操作仅通过存储过程发生,而不是通过插入和更新发生。一个固定的api。所以你想向表中添加一个项目,你调用存储过程:

addItem(itemName, itemDescription)

然后 proc 插入到 item 表中并执行必要的日志记录。

另一种技术,如果您使用某种框架进行 jdbc 访问(例如 Spring),则可能是在该层进行拦截。

于 2012-08-04T17:26:05.277 回答
1

在几乎所有表格中,我都有以下列:

  • 由...制作
  • 创建时间

这些列分别具有当前用户和当前时间的默认值。添加行时会填充它们。

这只能解决您的部分问题。您可以开始添加触发器,但这会变得复杂。另一种方法是通过存储过程强制修改访问数据库,然后记录存储过程。在控制用户可以做什么方面,这还有其他优势。但是,您可能需要更大的灵活性。

第三种可能性是审计工具,它跟踪数据库上运行的所有查询。我认为大多数数据库都有开启内部审计的方法,尽管这些都是针对数据库的。还有第三方工具可让您查看发生了什么。但请注意,如果您的数据库正在进行大量事务,这些方法将影响性能。

有关更多信息,您应该修改您的问题以指定您正在使用或计划使用的数据库。

于 2012-08-04T18:06:20.053 回答