怎样保证sql server中没有重复的记录??(50分)

  • 主题发起人 主题发起人 kongfei
  • 开始时间 开始时间
K

kongfei

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样保证sql server中没有重复的记录,比如说:人名和生日都相同就视为重复
 
select distinct... from 到另外一个临时表中
 
只要把这两个字段同时设为主键就行了。
 
就是,联合主键。
 
我是想把重复的记录全选出来用一个dbgrid显示,再做相应的处理
 
可以在表中设唯一性索引
 
主键,联合主键,唯一约束
 
在SAVE的时候去找数据库,看看有没有相同的就行。
有就提示不保存,没有就POST。
 
先设联合主键:人名和生日
然后再在向数据库中添加时数据集的onposterror事件中加:
if ADOC_jsyh.Errors.Count<>0
then
begin
messagebox(0,'文件编号冲突或输入信息不完整,请重试!','错误提示!',MB_ok);
abort;
end;
 
如果是为了使查询结果不重复,可用 select 的 distinct 选项。
如果是为了使表中的记录不出现重复数据,可以在该表的触发器中控制,
也可以对不可重复的字段建维一索引。
 
mk1024:
在触发器如何控制,讲详细点好吗?
 
》》我是想把重复的记录全选出来用一个dbgrid显示,再做相应的处理

select 人名,生日 ,count(*)
from yourTableName
group by 人名,生日 having count(*) > 1

应该能实现你的要求
 
表中已经有主键,不能用联合主键啊
 
添加唯一索引
 
设计数据库时或者表中没有重复记录时,各位说的都很好,添加唯一主键什么的
可是表中已经有了重复记录(完全重复)的记录时,可就加不上了,只能把重复的
记录处理过才行啊。
不知道楼主想干什么,要是在设计阶段,加主键吧,
要是已经有重复的了,那就用上面我写的语句选出来再处理吧
 
to:峻祁连
这个方法我知道,可是我想把记录的所有内容都显示出来,而且对这些记录要做一些编辑
上面的方法,只能让我知道有几条记录,我想对记录操作就不可能了
 
看了半天才看懂意思,嵌套一句SQL语言看看
select 人名,生日
from yourTableName
where 人名 in( select 人名 from yourTableName
group by 人名,生日 having count(*) > 1)
and 生日in( select 生日 from yourTableName
group by 人名,生日 having count(*) > 1)
 
后退
顶部