回滚informix数据库

回滚informix数据库,informix,rollback,Informix,Rollback,我有一些使用Informix 11.5数据库的代码,我想对其运行一些测试 如果测试失败,它们通常会使数据库处于不一致的状态,需要手动解决,然后才能再次运行测试 我希望自动执行此操作,以便在再次运行测试之前,测试不需要手动干预 我目前的解决方案是编写一些代码来进行清理,但这意味着每当新特性中可能出现新的不一致状态时,必须维护这些代码 代码运行许多存储过程,这些存储过程本身经常使用事务。由于Informix不支持嵌套事务,我不能将所有工作都打包到一个大事务中 是否有其他方法创建检查点,以便将数据库还

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

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

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

我目前的解决方案是编写一些代码来进行清理,但这意味着每当新特性中可能出现新的不一致状态时,必须维护这些代码

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


是否有其他方法创建检查点,以便将数据库还原回?

如果这是一个仅用于开发的服务器,在测试之前进行0级ontape系统存档如何?我认为这也可以通过sysadmin函数来实现(虽然不确定),因此可以实现自动化。测试后,您只需恢复归档。

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

Informix11.50确实支持保存点;但是,它不支持在没有中间提交或回滚的情况下一个接一个地开始工作

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


我不认为这是Informix独有的问题-这是测试DBMS操作的一般问题。

您可以创建一个带有撤消磁盘的虚拟机,运行测试后,您可以关闭虚拟机而不保存更改。这相当于你从未进行过测试