考虑Java应用程序仅使用存储过程从SQL Server数据库读取/修改数据。
我很想知道在执行某些代码后确切地插入/更新了哪些行。
正在执行的代码可以触发多个存储过程,并且这些过程在一般情况下使用不同的表。
我目前的解决方案是调试在调用任何存储过程之前执行的低级Java代码,并检查传递的参数,以手动重建影响。
这似乎无效且不可靠。
有更好的方法吗?
答案 0 :(得分:1)
要确切知道在执行某些代码后插入/更新了哪些行,您可以对所涉及的表的UPDATE,DELETE和INSERT操作实现triggers。对于每个表,这些触发器应该几乎相同,只更改名称以及与其表的关联。
对于这个建议,这些表应该有审计列,例如插入行时的日期时间列,以及更新行时的日期时间 - 至少。如果您需要(和需要),您可以搜索更多的审计想法,例如知道用户是否触发插入/更新的列,或者行被更改的次数,等等。
您应该根据您打算使用这些触发器生成的数据来详细说明实现此目的的方法。
我假设你知道如何用最佳实践做到这一点(例如,你可以[并且应该,恕我直言]以动态方式创建这些触发器以便于维护)。
最后,您将能够从sys表中详细说明包含有关表和行的信息的查询,并仅返回所涉及的行,按这些新列排序(这只是我希望适合您特定情况的想法)。 / p>