如何防止插入重複的數據

misswangjinfeng 2011-02-09 04:18:42
begin tran
insert into _en_usergroupmember select (select g.ugid from _en_usergroup g where groupname='SA-supplier') ,u.uid,null
from _en_user u where u.loginid in
('AFung','AsCh','TL','BLaw','BnP','Eluen','IM','IsC','KammyF','MaCh','MH','StL','TL','TW','VH')
Commit

主外鍵關係
_en_user uid
_en_usergroupmember ugid ,uid (共有三個列)
_en_usergroup ugid

插入語句是這樣子寫的,但是其中的一些是 _en_usergroupmember 已經存在的,而且這個表沒有主鍵,那我怎麼把_en_usergroupmember 裏面不存在的數據才插入進去呢 ?
...全文
157 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
misswangjinfeng 2011-02-12
我用的proc 用 游标循环判断的,不过显得麻烦
回复
guanjm 2011-02-11
建个唯一索引不就行了
回复
kye_jufei 2011-02-11
if not exists(select 1 from tb where ugid = ... and uid = ...)
insert into...
回复
zcwzf 2011-02-10
建议你加入一个主键,这样效率高
用触发器的效率更低
回复
huyingxin 2011-02-10
能不能加个触发器啊
回复
dawugui 2011-02-10
[Quote=引用 2 楼 misswangjinfeng 的回复:]
忘记说明一个问题了,_en_usergroupmember 里面一个uid 对应 多个 ugid
ugid ,uid 这两个列不能有重复的,把他们看成组合
[/Quote]
if not exists(select 1 from tb where ugid = ... and uid = ...)
insert into ...
回复
wangbin1986 2011-02-10
才女啊 插入前判断
回复
王向飞 2011-02-09
最好给点儿测试数据和你需要的结果

http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html


参考此人提问方式。
回复
misswangjinfeng 2011-02-09
忘记说明一个问题了,_en_usergroupmember 里面一个uid 对应 多个 ugid
ugid ,uid 这两个列不能有重复的,把他们看成组合



回复
飘零一叶 2011-02-09
begin tran
insert into _en_usergroupmember select (select g.ugid from _en_usergroup g where groupname='SA-supplier') ,u.uid,null
from _en_user u where u.loginid in
('AFung','AsCh','TL','BLaw','BnP','Eluen','IM','IsC','KammyF','MaCh','MH','StL','TL','TW','VH')
and u.uid not in(select uid from _en_usergroupmember)
Commit

再加上一个条件
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2011-02-09 04:18
社区公告
暂无公告