主题:用dele all命令后再用Append blank命令
有约故人来
[专家分:50] 发布于 2009-05-31 15:35:00
我有一数据库表abc.dbf,之前用index on xxx1 to abc_xxx1.idx,index on xxx2 to abc_xxx2.idx建了若干个索引文件。现在用如下命令:
use abc.dbf index abc_xxx1.idx,abc_xxx2.idx
dele all
删除所有记录
再用:
append blank
repl xxx1 with aaa,xxx2 with bbb
请问这样重新生成的数据库表,索引文件是否还有效?
谢谢!
回复列表 (共6个回复)
沙发
liupeisong [专家分:2340] 发布于 2009-05-31 17:01:00
你这样的索引,必须保持没有关闭的情况下进行的数据操作才能和索引一致,或者说是如果index命令执行后没有退出VFP,也没有进行其他操作,接着dele all,那样索引文件就有效!
另外,dele all以后,没有执行pack或zap命令,记录是没有物理删除的,请LZ注意这一点
板凳
qjbzjp [专家分:8830] 发布于 2009-05-31 21:15:00
还有效!
3 楼
lbscyb [专家分:4780] 发布于 2009-06-03 00:08:00
你只是删除记录,没有删除索引
索引文件还在,索引当然有效
4 楼
zzlhz [专家分:0] 发布于 2009-06-10 15:39:00
是的,
5 楼
liupeisong [专家分:2340] 发布于 2009-06-10 15:45:00
建议使用所谓的“结构化复合索引”,这样就不存在索引是否有效的问题。
结构复合索引文件
当创建表索引时,Visual FoxPro 自动创建结构 .cdx 文件来存储该索引。术语“结构”是引用 Visual FoxPro 把结构 .cdx 文件看作是表固有部分的事实,当打开和关闭表时自动打开和关闭结构 .cdx 文件,并且当添加、改变或删除表记录时自动维护结构 .cdx 索引。如果 Visual FoxPro 表有一个相关的索引文件,它通常是结构 .cdx 文件。结构 .cdx 文件始终具有与表(.dbf)文件名相同的基本名。
结构 .cdx 文件可以在同一文件中包含多个索引。推荐将结构 .cdx 文件用于频繁使用和需要经常维护的索引,象用于为每日查看、数据输入、Rushmore Query Optimization 或经常打印报表的记录组织。
注意:
对于给定的表,Visual FoxPro 在与该表(.dbf)文件有关的结构 .cdx 文件中存储主和候选索引。不能将主和候选索引存储在其他 .cdx 文件中,象非结构 .cdx 文件,也不是主和候选索引可能使用的独立索引(.idx)文件,因为每当相关表打开时该索引文件应当始终是打开的。
6 楼
foxdb [专家分:1830] 发布于 2009-06-11 21:01:00
楼主:
5楼说的的确是那样!你应该用复合索引,因为复合索引过的文件打开时,即使你不指定CDX索引文件,索引文件也会自动跟随打开。但有个弊端就是CDX文件容易因外部原因出乱比如主机“掉电”或非正常关闭等。这时你必须做“重新索引CDX文件”。如果你删除CDX文件,第一次打开索引过的文件时(低版本)提示出错(但第二次打开就正常了)。(高版本)提示(找不到结构CDX文件)选“忽略”索引将移去,这时可重新索引一次CDX文件。
我来回复