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

明月书君 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 表的相应行也不能删了。

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

我刚接触数据库,有很多地方不懂,请各位大神指教,谢谢!
...全文
226 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2014-02-07
  • 打赏
  • 举报
回复
闲人1970 2014-02-07
  • 打赏
  • 举报
回复
将T3和T1级联,将T2和T1级联,用两个级联就可以了
kk_lucky 2014-02-07
  • 打赏
  • 举报
回复
楼上方法可行
唐诗三百首 2014-02-03
  • 打赏
  • 举报
回复
不建议用外键约束和触发器, 可以写为2个TSQL语句,封装为一个事务执行即可.
LongRui888 2014-02-03
  • 打赏
  • 举报
回复
修改一下: alter table t3 add constraint con_ttt foreign key (FK_学生帐号) references t2(用户帐号) on delete cascade on update cascade
LongRui888 2014-02-03
  • 打赏
  • 举报
回复
增加约束: alter table t3 add constraint con_ttt foreign key FK_学生帐号 references t2(用户帐号) on delete cascade on update cascade
LongRui888 2014-02-03
  • 打赏
  • 举报
回复
你把T3的学生帐号中的 FK_学生帐号 -->>>>> T2用户帐号 ,这样就可以了。 这样T3的学生帐号,就是外键了,引用自T2用户帐号了,如果你删除、更新了T2用户帐号,那么T1 和 T3的帐号,就会自动删除、更新了,实现级联删除、级联更新的效果。
shoppo0505 2014-02-03
  • 打赏
  • 举报
回复
这三个表关系不对啊。
应该这样啊。

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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