标题:[求助] 插入重复列时,数据库提示的错误信息可否利用?
只看楼主
DACHENER
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-8-10
 问题点数:0 回复次数:5 
[求助] 插入重复列时,数据库提示的错误信息可否利用?
请教个问题:

数据库的表中某列值我设了唯一值了,不允重复插入。现在我做的东西,是想如果表中有已存在的列,就update,没有

就insert。那对已存在的列的检查,现在我想的方法很弱,就是select *全部搜一遍,感觉表很大时,会影响效率,有没

有可能利用数据库的一些方法(它不允许插入重复列,会报错,可不可以根据它提示的错识信息来判断已有存在列,如果

有这类错误信息,asp怎么调用呢?)


万分感谢
搜索更多相关主题的帖子: 错误信息 数据库 提示 insert 
2007-09-12 09:41
YSKING
Rank: 5Rank: 5
来 自:中国绿城
等 级:贵宾
威 望:16
帖 子:1380
专家分:25
注 册:2006-11-11
得分:0 

你说的是更新吧,更新的就直接用update就可以了,如果是插入的话,你给表定义一个主键就好了


仍然自由自我,永远高唱我歌,走遍千里...
2007-09-12 10:54
DACHENER
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-8-10
得分:0 
回复:(YSKING)你说的是更新吧,更新的就直接用upda...
看样子,我没有表述清楚

已经定义主键了
如果该列值已经存在,就只能update了
我有疑惑的是 判断该列值存在的方法 我只知道用 select * from 表名 where id=值

如果表很大的话,几百或几千条记录,都这么查以验证列值是否存在

效率会很慢


有没有更好的办法?
2007-09-12 12:53
xcnli
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-9-5
得分:0 
顶一下,我也很想知道。请哪位高手教教我们。
2007-09-13 13:08
不惑
Rank: 2
等 级:论坛游民
威 望:2
帖 子:569
专家分:13
注 册:2007-3-22
得分:0 
select * from 表名 where id=值
表大也不会增加太多的负担的,只要id为主键。
因为它是直接选取(这就是设为主键的目的),并不是一条一条地去找。
但表大如果用:
select * from 表名 where 字段 like '%" & 内容& "%'"
来找,那系统会摊了的。
如果你的表大,而经常会有这样的模糊查找,建议把数据库进行改造
比如新建一个查找“内容”的表名,表内容就为查找的记录。这个方法中能为经常查找的内容建新表。
可以使用程序自动来生成(第一次查会查慢,但第二次以后就飞一样了)。
如果不是模糊查找,分别生成以那个字段为主键的表,那样查找也会非快的。
2007-09-13 14:13
不惑
Rank: 2
等 级:论坛游民
威 望:2
帖 子:569
专家分:13
注 册:2007-3-22
得分:0 
为了说明问题,我再哆嗦二句
为什么会表大也没什么负担的原因是,如果以主键方式查找,查找的方式为二分法。也就是再大的表,也只要运算几十次就够了。比如2的60次方为多大的数了?
也就是说不太可能会超过60次的运算的。就算超过了。61次,62次又增加了多少个微秒呢?可每增加一次,可查找的数据都是几何级地增多的。
可能我说得还有点抽象,再直接一点说吧:
运行30次就可以查找10亿条数据记录了。
60次,可能google的数据库也没有这么多记录。

[此贴子已经被作者于2007-9-13 14:28:08编辑过]

2007-09-13 14:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-169324-1-1.html




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

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