首页 新闻 会员 周边

求多对多关系,删除数据的时候,只删除中间表的数据,该怎么做。

0
[已解决问题] 解决于 2010-08-17 11:54

求多对多关系,删除数据的时候,只删除中间表的数据,该怎么做。

 

 

问题补充: user 表 id username 1 admin 中间表:user_course表 id userid courseid 1 1 1 2 1 2 course组表 id course 1 软件工程组 2 广告装潢组 现在,用户所在组,可以多选,一个用户可以属于多个组, ,在后台进行删除的时候,在后台取不到中间表的id无法进行删除....
lovemc的主页 lovemc | 初学一级 | 园豆:13
提问于:2010-08-17 10:21
< >
分享
最佳答案
0

中间表是啥表?

难道是只表示两表关系的映射表(mapping)?

 

delete * from user_course where userid = 1 and courseid = 2

有多条的话,可以用数据库事务,也可以简单点:

delete * from user_course where userid in{1,1} and courseid in{1,2}

Launcher | 高人七级 |园豆:45045 | 2010-08-17 10:36
算是吧,我对于多对多关系也接触的少,
lovemc | 园豆:13 (初学一级) | 2010-08-17 10:41
@lovemc:不用主键 id ,直接用 userid courseid 定位删除.
Launcher | 园豆:45045 (高人七级) | 2010-08-17 10:44
可以了,谢谢
lovemc | 园豆:13 (初学一级) | 2010-08-17 11:00
其他回答(3)
0

表上面不要建参照完整型规则,由程序来做删除操作。

Astar | 园豆:40805 (高人七级) | 2010-08-17 10:29
我没有建约束,在后台程序选择的时候取不到中间表的主键id,无法进行删除
支持(0) 反对(0) lovemc | 园豆:13 (初学一级) | 2010-08-17 10:40
@lovemc:其实你在删除用户的时候,需要删除user_course表中所有和用户userid有关的记录。所以有了用户id,直接:delete from user_course where userid in (1,2..)
支持(0) 反对(0) Astar | 园豆:40805 (高人七级) | 2010-08-17 10:45
1

建议给出具体数据

  不要建立约束,就可以删除了

jowo | 园豆:2834 (老鸟四级) | 2010-08-17 10:31
0

把主外键关系删除掉,这样就可以通过程序单独删除中间表的数据了。

kyo-yo | 园豆:5587 (大侠五级) | 2010-08-17 10:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册