如何防止插入重複的數據

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 裏面不存在的數據才插入進去呢 ?
...全文
205 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
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...
非零传说 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

再加上一个条件

22,301

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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