求救!!

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

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

请指教!!
...全文
40 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nielisheng 2003-01-17
  • 打赏
  • 举报
回复
建索引
hanxian 2003-01-17
  • 打赏
  • 举报
回复
tj_dns(愉快的登山者) ( )
如果他的代码用存储过程的话就可以了,
调用存储过程,无论如何并发总有个先后吧
不过我有时在主键列不允许为空的情况下,就是可以插入空值,呵呵,我也不知道是什么情况下发生的
SE1 2003-01-16
  • 打赏
  • 举报
回复
???为什么要先查找呢?有主键,就可以保证不会出现重复输入的情况--数据库本身就限制了不可以重复输入。你需要做的只是在插入事务提交后检查数据库返回的信息即可。事实上,无论你是否存在上述的要求,在提交插入后里都必须检查结果,这是一个常识问题。
插入前先检查不可取,一方面,无论你是否检查,数据库都将进行检查,另一方面,在极端情况下(如并发较多),可能会出现在你检查之后提交插入之前,另一个用户插入了相同的数据--如此,你还是没有解决问题。
愉快的登山者 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
  • 打赏
  • 举报
回复
用存储过程,在插入数据之前判断是否有重复数据,如果有则不插入返回一个值

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧