| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5757 人关注过本帖
标题:临时表的delete操作会因操作系统不同而不同吗?
只看楼主 加入收藏
lljchi
Rank: 2
等 级:论坛游民
帖 子:172
专家分:95
注 册:2016-7-21
结帖率:96.15%
收藏
已结贴  问题点数:20 回复次数:16 
临时表的delete操作会因操作系统不同而不同吗?
临时表的delete操作处理会因操作系统不同而不同吗?
需要对一张表重复清空处理,使用delete语句在win7上一切正常,数据先被清空了再继续,在xp上则没反应,数据没被清空就继续在临时表上累加了。
delete之后没有使用pack语句,使用会提示错误
最后使用select语句获取不存在的记录建一个空的临时表代替,
请问这是操作系统的问题吗?谢谢!
搜索更多相关主题的帖子: 操作系统 记录 
2017-01-11 08:22
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:5 
有。一般是空格造成。如:
bh=allt(thisform.text1.value)
delete from 表名 where 字段名=bh
这条命令,在XP能也许能正常删除,但在WIN7中,也许不能正常删除。
改为这样,就能在XP中能删除,在WIN7中也可以。
bh=allt(thisform.text1.value)
delete from 表名 where allt(字段名)=bh
查询也一样
bh=allt(thisform.text1.value)
select * from 表名 where 字段名=bh



[此贴子已经被作者于2017-1-11 08:34编辑过]

2017-01-11 08:30
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
另外,临时表清空时,pack操作无效
delete from 表名
pack &&无效的
直接用zap代替上面
zap
还可以用重新生成表来清空数据,如
select * from 临时表 where .f. into cursor 临时表 readw



[此贴子已经被作者于2017-1-11 08:42编辑过]

2017-01-11 08:38
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10537
专家分:42927
注 册:2014-5-20
收藏
得分:5 
delete、pack 要重建文件,要在独占方式时才能进行。
清空的话用zap,不用重建文件,只是将文件尾结束符写到首记录头,执行效率较高。
2017-01-11 09:51
lljchi
Rank: 2
等 级:论坛游民
帖 子:172
专家分:95
注 册:2016-7-21
收藏
得分:0 
回复 2楼 mywisdom88
谢谢,应该和空格无关,因为没用where子句
只用了delete from 表名
zap没用过,我以为是和pack一样也会无效
2017-01-11 09:55
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10537
专家分:42927
注 册:2014-5-20
收藏
得分:0 
估计临时表也是用SQL命令创建的,创建的临时表可读写吗?
2017-01-11 10:26
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:5 
以下是引用lljchi在2017-1-11 09:55:33的发言:

谢谢,应该和空格无关,因为没用where子句
只用了delete from 表名
zap没用过,我以为是和pack一样也会无效
pack是复制记录到新表、删除旧表、重命名新表这一系列操作的组合,而ZAP只写一个文件结束符。两者是不同的工作原理。
2017-01-11 10:32
lljchi
Rank: 2
等 级:论坛游民
帖 子:172
专家分:95
注 册:2016-7-21
收藏
得分:0 
回复 6楼 吹水佬
对,要清空的临时表也是通过select……into cursor …… readwrite创建的
2017-01-11 12:13
lljchi
Rank: 2
等 级:论坛游民
帖 子:172
专家分:95
注 册:2016-7-21
收藏
得分:0 
回复 7楼 taifu945
谢谢,原来是这样,看参考帮助中对zap的说明有:
执行 ZAP 命令相当于先执行 DELETE ALL 然后执行 PACK,但是 ZAP 要快很多。
就以为二者一样了
2017-01-11 12:17
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用lljchi在2017-1-11 12:13:32的发言:

对,要清空的临时表也是通过select……into cursor …… readwrite创建的

那就这样来清空,要生成的表名是相同的。
select * from 临时表名称 where .f. into cursor 临时表名称 readwrite

2017-01-11 15:02
快速回复:临时表的delete操作会因操作系统不同而不同吗?
数据加载中...
 
   



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

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