回滚informix数据库

时间:2011-11-02 10:38:36

标签: informix rollback

我有一些使用Informix 11.5数据库的代码,我想对它进行一些测试。

如果测试失败,他们通常会使数据库处于不一致的状态,需要手动解决才能再次运行测试。

我想自动执行此操作,以便在再次运行测试之前不需要手动干预。

我目前的解决方案是编写一些执行清理的代码,但这意味着只要新功能中出现潜在的新不一致状态,就必须维护代码。

代码运行了很多存储过程,这些存储过程本身经常使用事务。由于Informix不支持嵌套事务,因此我不能将所有工作都包含在一个大事务中。

是否有另一种创建检查点的方法,我可以将数据库还原回?

3 个答案:

答案 0 :(得分:1)

如果这只是一个开发服务器,那么在测试之前如何使用Level 0 ontape系统存档?我认为这也可以通过sysadmin函数完成(不确定),因此可以实现自动化。测试完成后,您只需恢复存档。

答案 1 :(得分:1)

更改数据库状态 - 并将其重置回已知状态 - 是单元测试社区花费时间和精力避免对数据库进行测试的原因之一。这是一个棘手的问题。

Informix 11.50确实支持保存点;但是,如果没有介入的COMMIT或ROLLBACK,它不会支持一个BEGIN WORK。

尽可能让测试创建并加载一组包含已知数据的表。实现这一目标的一种方法是为测试创建一个全新的数据库。但是,如果您需要使用大量数据进行测试,这只是临界可行的。

我认为这个问题在任何方面都不是Informix独有的 - 这是测试DBMS操作的一般问题。

答案 2 :(得分:1)

您可以使用撤消磁盘创建虚拟机,并在运行测试后关闭虚拟机而不保存更改。这相当于你从未进行过测试!

相关问题