有没有办法在INFORMIX-SQL中取消删除已删除的行?

时间:2012-04-20 05:45:46

标签: sql informix delete-row

除了使用文本编辑器物理删除行尾的\ 0之外?

1 个答案:

答案 0 :(得分:3)

这取决于Informix SQL背后的数据服务器。

如果数据服务器是SE(标准引擎),并且如果风对你有利(特别是,如果以前分配给现在已删除的行的空间尚未重新用于其他任何内容),那么你可以修改.dat文件以将“死行”标记(C中的'\0')更改为“实时行”标记(C中为'\n')。然后,您需要使用bchecksecheck检查表中的索引(取决于Informix SE的版本)。这依赖于有关C-ISAM数据文件的一些内部知识。

如果数据服务器是IDS(Informix Dynamic Server,现在又称Informix),那么答案基本上是“不”。当然,'空间不重复'的警告适用。但是,在C-ISAM(SE)中没有简单的行结束标记,并且没有一种简单的方法可以准确找到已删除数据的存储位置,并且在多个页面上分割的行存在问题足够大的行大小(大于4 KiB;在大多数系统上,大于2 KiB)等等。因此,基本上,答案是否定的。