我制作了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.
答案 0 :(得分:1)
将“last_modified”列添加到表中然后在表上添加更新触发器以将其设置为db当前时间是非常标准的。然后你的应用程序不需要担心它。此外,通常也使用“create_time”,由插入触发器填充。
评论后更新:
似乎您正在寻找审核日志。有些编写应用程序,其中数据操作仅通过存储过程发生,而不是通过插入和更新。一个固定的api。所以你想要一个项目添加到一个表,你调用存储过程:
addItem(itemName, itemDescription)
然后proc插入到项目表中并执行必要的日志记录。
另一种技术,如果你使用某种框架进行jdbc访问(例如Spring)可能是在该层拦截。
答案 1 :(得分:1)
在几乎所有的表中,我都有以下列:
这些列分别具有当前用户和当前时间的默认值。添加行时会填充它们。
这只解决了部分问题。您可以开始添加触发器,但这会变得复杂。另一种方法是通过存储过程强制修改对数据库的访问,然后记录存储过程。在控制用户可以做什么方面,这具有其他优点。但是,您可能需要更多的灵活性。
第三种可能性是审计工具,用于跟踪数据库上运行的所有查询。我认为大多数数据库都有开启内部审计的方法,尽管这些数据库对数据库非常具体。还有第三方工具可以让您查看发生的情况。但请注意,如果您的数据库正在执行大量事务,这些方法将影响性能。
有关详细信息,请修改您的问题以指定您正在使用或计划使用的数据库。