• 主页
  • 基础类
  • 应用实例
  • 新技术前沿

数据库表关系之间的一个问题

明月书君 2014-02-02 11:52:00
我用的是 sql server 2008 r2



这样的三张表,我想的是教师和学生的账号都存在 T2 表里,然后那些主键外键关系都在表里了(所有关系都设置级联删除更新)。

但是这样的话我删除账号里的学生账号的时候就不能删除 T3 表里的对应行了,如果我将外键 FK_学生账号连接到 T2 表的主键,并且设置了级联删除更新,保存时系统会提示

可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。

可是我不想指定别的 ON DELETE NO ACTION 或 ON UPDATE NO ACTION ,如果修改其他外键约束那么删除教师账号 T1 表的相应行也不能删了。

怎么能达到我的目的呢?删除班级可以删除所有该班级的学生,删除账号还可以删除相应表里的相应行。

我刚接触数据库,有很多地方不懂,请各位大神指教,谢谢!
...全文
165 点赞 收藏 8
写回复
8 条回复
發糞塗牆 2014年02月07日
回复 点赞
闲人1970 2014年02月07日
将T3和T1级联,将T2和T1级联,用两个级联就可以了
回复 点赞
kk_lucky 2014年02月07日
楼上方法可行
回复 点赞
唐诗三百首 2014年02月03日
不建议用外键约束和触发器, 可以写为2个TSQL语句,封装为一个事务执行即可.
回复 点赞
阳泉酒家小当家 2014年02月03日
修改一下: alter table t3 add constraint con_ttt foreign key (FK_学生帐号) references t2(用户帐号) on delete cascade on update cascade
回复 点赞
阳泉酒家小当家 2014年02月03日
增加约束: alter table t3 add constraint con_ttt foreign key FK_学生帐号 references t2(用户帐号) on delete cascade on update cascade
回复 点赞
阳泉酒家小当家 2014年02月03日
你把T3的学生帐号中的 FK_学生帐号 -->>>>> T2用户帐号 ,这样就可以了。 这样T3的学生帐号,就是外键了,引用自T2用户帐号了,如果你删除、更新了T2用户帐号,那么T1 和 T3的帐号,就会自动删除、更新了,实现级联删除、级联更新的效果。
回复 点赞
shoppo0505 2014年02月03日
这三个表关系不对啊。
应该这样啊。
回复 点赞
发动态
发帖子
MS-SQL Server
创建于2007-09-28

1.4w+

社区成员

25.3w+

社区内容

MS-SQL Server相关内容讨论专区
社区公告
暂无公告