| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5518 人关注过本帖, 1 人收藏
标题:表中插入记录的命令怎么执行不了
只看楼主 加入收藏
任性
Rank: 1
等 级:新手上路
帖 子:73
专家分:2
注 册:2008-1-19
结帖率:87.5%
收藏(1)
已结贴  问题点数:6 回复次数:12 
表中插入记录的命令怎么执行不了
执行insert命令时总是在表尾添加了空白记录,在指定位置怎么添加,为什么总是不行?我很菜,请高手帮忙
搜索更多相关主题的帖子: 记录 insert 
2012-12-27 16:24
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:4 
1、当前记录前插入一条空记录:
INSERT BEFORE BLANK
2、当前记录后插入一条空记录:
INSERT BLANK

坚守VFP最后的阵地
2012-12-27 16:45
任性
Rank: 1
等 级:新手上路
帖 子:73
专家分:2
注 册:2008-1-19
收藏
得分:0 
回复 2楼 sdta
用了这个命令,总是加到最后,不能插到中间,
刘.zip (5.13 KB)
的第五条记录后插入一条,怎么操作
2012-12-27 16:55
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
不要在表结构中添加索引,关闭索引文件就正常了

坚守VFP最后的阵地
2012-12-27 17:02
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
正如4楼所言,关闭所有的索引就行啦(SET ORDER TO 0)。不过,建议你用INSERT-SQL命令,如果你表文件中记录数比较多的话。因为传统的INSERT命令插入记录时,是通过移动其它后续记录来达到腾出空间的目的,如果记录众多,移动记录需要相当长的时间。
2012-12-27 17:51
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:2 
以下是引用任性在2012-12-27 16:55:45的发言:

用了这个命令,总是加到最后,不能插到中间,的第五条记录后插入一条,怎么操作
2楼的很明白的

1、当前记录前插入一条空记录:
use 2012
go 6
INSERT BEFORE BLANK
2、当前记录后插入一条空记录:
use 2012
go 5
INSERT BLANK
2012-12-27 18:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
带索引也可以在任意指定位置插入的

授人以渔,不授人以鱼。
2012-12-27 18:29
任性
Rank: 1
等 级:新手上路
帖 子:73
专家分:2
注 册:2008-1-19
收藏
得分:0 
回复 4楼 sdta
好了,谢谢!
2012-12-27 19:18
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你的目的是要在排序状态下在指定位置处插入一条记录,除非你先物理排序然后关闭索引再insert before,否则insert before之后必定因索引关键字段为空而被重新排序,而关闭索引的插入,也是通过物理挪动记录实现的。举个例子,你有111222333这样9条记录,要在222的第2个2处插入一笔2,把记录指针定位到现在看起来正确的位置,然后关闭索引insert before,那么错误就跟着来了,这个时候这条记录的before未必是你当时看到的那样在222的第2个2的前面!

解决的办法是不能关掉索引,必须保持排序状态。直接append blank在最末尾加一条空记录,然后把它的索引关键字段写成2,那么这条新记录就会成为原先222后面的第4个2,即2222,最后一条是空记录,然后把原先的222中的后两个22依次抄到后面,即顺序下移一位,把需要的那个位置空出来,然后填写数据。这个操作,实际只挪动了2条记录的数据,比关闭索引后insert before所挪动的记录数往往少得多(那个在正确顺序态下是挪动了5条记录,多了后面的3个3)。程序代码是多的,但操作会比那个快,而且保证不会出错。

为什么SQL的insert before会快呢?就是因为它带索引的,原理就是如上所说那样,挪动的数据少了,当然快了。SQL的很多指令,都要对带索引的表操作才快,道理也在这里。

[ 本帖最后由 TonyDeng 于 2012-12-27 19:44 编辑 ]

授人以渔,不授人以鱼。
2012-12-27 19:37
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
还是那句老话:当你熟练掌握了select语句之后,你就会发现新记录插入在哪个位置,根本就是不需要关心的事情。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-12-27 19:55
快速回复:表中插入记录的命令怎么执行不了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051027 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved