Transactions Firebird DB在提交后读取已删除的寄存器

Transactions Firebird DB在提交后读取已删除的寄存器,transactions,firebird,firebird2.5,Transactions,Firebird,Firebird2.5,我有一个firebird 2.5数据库,我想知道是否有办法回滚提交的事务。真的,我想问的是,能够访问firebird数据库文件的人是否能够读取在先前提交的事务中删除的数据。 我有一个进程(存储过程),可以删除一些寄存器并提交。这可能是可以访问数据库文件的人的恢复吗?没有简单的方法可以恢复/回滚提交的事务,但是Firebird使用。删除(或更新)记录将添加新的记录版本,并为记录的以前状态创建增量记录版本 当没有事务对旧记录版本“感兴趣”时,它就有资格进行垃圾收集(这可以在另一个事务访问该记录时或在

我有一个firebird 2.5数据库,我想知道是否有办法回滚提交的事务。真的,我想问的是,能够访问firebird数据库文件的人是否能够读取在先前提交的事务中删除的数据。

我有一个进程(存储过程),可以删除一些寄存器并提交。这可能是可以访问数据库文件的人的恢复吗?

没有简单的方法可以恢复/回滚提交的事务,但是Firebird使用。删除(或更新)记录将添加新的记录版本,并为记录的以前状态创建增量记录版本

当没有事务对旧记录版本“感兴趣”时,它就有资格进行垃圾收集(这可以在另一个事务访问该记录时或在后台协同完成)。但是,无法保证何时发生此垃圾回收

因此,如果一条记录被删除了,但还没有被垃圾收集(要么是因为仍有对它感兴趣的事务,要么是因为垃圾收集器还没有访问该记录),那么对Firebird的内部结构有足够技能和知识的人仍然可以恢复该记录。请注意,即使某个记录版本已被垃圾收集,数据本身也将保存在磁盘上,直到被另一个记录版本覆盖为止


另请参见

谢谢您的回答。几天前我读了第四集,我认为它不容易读,但也许它是可能的,正如你所说的。如果在执行删除操作后启动垃圾回收,问题仍然存在。我只能在我确实希望不可恢复的事务上执行此操作。@briast这可能有助于了解您需要了解的原因:您需要恢复数据,还是要确保删除的记录不可恢复?您好。我想确保删除的记录是不可恢复的。唯一真正确保的方法是在删除后执行备份和还原。但是我想说,你要求它不可恢复是相当可疑的。可疑?这个要求来自我的客户。这是他想要的。:-)