SQL中有没有办法让“改变了什么?”?

时间:2009-02-10 22:06:50

标签: sql database diff

我常常发现自己正在开发一个带有巨型RDBMS的新项目,其模式我还不了解。我希望能够在数据库中标记一个检查点,在应用程序中执行某些操作,然后返回到数据库并询问哪些表已更改(最理想的是,哪些记录已更改)。

有没有办法用SQL做这样的事情?我发现this,但它只是MSSQL(我没有使用)。

它不需要超级高效。它只是在我的开发盒上,如果需要我可以等待几秒钟,但我正在寻找比“将整个数据库转储两次并将结果差异化”更好的东西。

6 个答案:

答案 0 :(得分:2)

如果您的DBMS支持查询日志记录,请将其打开并剪切日志。

答案 1 :(得分:2)

SQL Server和Oracle都有一个可以启用的功能,称为“更改数据捕获”。你说你没有使用SQL Server,但如果你使用的是甲骨文,那么仍然有希望。也许你应该提一下你使用的dbms。

答案 2 :(得分:0)

我很漂亮我曾经遇到过你和服务器之间的MySQL代理工具。

我怀疑你会遇到一个适用于每个SQL DB的解决方案。 (将所有表转储到.SQL或.CSV文件之前和之后并将它们区分开来?)

答案 3 :(得分:0)

  • 向记录所有更改的所有表添加触发器。
  • 检查是否可以挂钩应用程序的数据访问层以记录事物
  • 或者它是否支持开箱即用。 (我认为Windows上的ODBC支持此功能。)

答案 4 :(得分:0)

您最好的选择是查看您的RDBMS是否提供可执行此操作的专有功能,或添加可记录事件的更新触发器。

答案 5 :(得分:0)

在mysql中,我使用了一个列

modified timestamp

检索已更改的行