导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

求救!!

juliegaosi 2003-01-16 03:39:28
在表TB中添加数据的时候,如何避免出现数据的重复录入。

并且TB表是由name和No1,No2,No3.组成主键。

请指教!!
...全文
5 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nielisheng 2003-01-17
建索引
回复
hanxian 2003-01-17
tj_dns(愉快的登山者) ( )
如果他的代码用存储过程的话就可以了,
调用存储过程,无论如何并发总有个先后吧
不过我有时在主键列不允许为空的情况下,就是可以插入空值,呵呵,我也不知道是什么情况下发生的
回复
SE1 2003-01-16
???为什么要先查找呢?有主键,就可以保证不会出现重复输入的情况--数据库本身就限制了不可以重复输入。你需要做的只是在插入事务提交后检查数据库返回的信息即可。事实上,无论你是否存在上述的要求,在提交插入后里都必须检查结果,这是一个常识问题。
插入前先检查不可取,一方面,无论你是否检查,数据库都将进行检查,另一方面,在极端情况下(如并发较多),可能会出现在你检查之后提交插入之前,另一个用户插入了相同的数据--如此,你还是没有解决问题。
回复
declare @name char(10)
declare @no1 char(10)
declare @no2 char(10)
declare @no3 char(10)
set @name = ...
set @no1 = ...
set @no2 = ...
set @no3 = ...
if no exists (select * from TB where name = @name and NO1 = @no1
and NO2 = @no2 and NO3 = @no3)
insert into TB values (@name, @no1, @no2, @no3)


回复
amtyuranus 2003-01-16
你先找一下有没有再差好了,你可以用存储过程
回复
lvfengrong 2003-01-16
有主键即使录入重复数据也会失败
回复
yelook 2003-01-16
用存储过程,在插入数据之前判断是否有重复数据,如果有则不插入返回一个值
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告