多级关联

asper 2002-03-08 12:23:00
现有A,B,C三个表
A表 B表 C表
aid bid c1
c2
A与B的的关系中aid是主键,bid是外键,
C与B的关系中bid是主键,c1是外键
现在我要键c2与bid的约束,bid为主键,c2为外键,可是系统提示出错
帮帮忙看一下
...全文
103 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jamex 2002-03-08
  • 打赏
  • 举报
回复
提示什么错?
asper 2002-03-08
  • 打赏
  • 举报
回复
bluepower讲的我已经明白了,级联删除是不可以的,
但可以做级联修改,是么?
jb_coolman 2002-03-08
  • 打赏
  • 举报
回复
你是什么应用?
为什么要用B表中的主键对应C表中两个外键,你的数据库设计好像有问题。
能把你的应用筒介一下吗?
SE1 2002-03-08
  • 打赏
  • 举报
回复
c2是C表中的吗?那么,刚才的例子就错了,应该是B表和C表。
SE1 2002-03-08
  • 打赏
  • 举报
回复
“不选择级联更新和级联删除就可以
选了就不能创建关联,
为什么??”:
提示里说得很清楚:“将导致循环或多重级联路径”。在你的设计里,A、B表互为父子关系,当然就不能选择级联更新和级联删除。例如:
如果建立了级联删除,当你删除A表时,由于aid是主键,bid是外键,需要首先删除B表中对应的行;由于bid为主键,c2为外键,删除B表中的行,又得先删除A表中的行。。。那么,就又可能会出现无穷循环,所谓“子子孙孙,无穷尽也”。
所以,DBMS不允许你这样干。
bluepower2008 2002-03-08
  • 打赏
  • 举报
回复
这跟你的a表没有关系,错杀无辜!主要是因为你的b表和c表已经有了一个外键关系(bid,c1),如果再增加一个外键关系(bid,c2),也没什么问题,但一旦有级联删除,那么如果b表的bid删除一个,c表的c1=bid的记录要进行级联删除,同时c表的c2=bid的记录也要删除,如果有c1=c2的记录,那数据库就发疯了,因为删除操作是在同一个事务中,这不是存心让数据库死锁吗?
SE1 2002-03-08
  • 打赏
  • 举报
回复
“不选择级联更新和级联删除就可以
选了就不能创建关联,
为什么??”:
提示里说得很清楚:“将导致循环或多重级联路径”。在你的设计里,A、B表互为父子关系,当然就不能选择级联更新和级联删除。例如:
如果建立了级联删除,当你删除A表时,由于aid是主键,bid是外键,需要首先删除B表中对应的行;由于bid为主键,c2为外键,删除B表中的行,又得先删除A表中的行。。。那么,就又可能会出现无穷循环,所谓“子子孙孙,无穷尽也”。
所以,DBMS不允许你这样干。
asper 2002-03-08
  • 打赏
  • 举报
回复
faint
现在删掉A表,只有B表和C表
bid对应c1,c2还是不行
难道一对多不是这么做的??
help
asper 2002-03-08
  • 打赏
  • 举报
回复
不选择级联更新和级联删除就可以
选了就不能创建关联,
为什么??
asper 2002-03-08
  • 打赏
  • 举报
回复
b' 表成功保存
'c' 表
- 不能创建关系 'FK_c_b1'。
ODBC 错误: [Microsoft][ODBC SQL Server Driver][SQL Server]将 FOREIGN KEY 约束 'FK_c_b1' 引入表 'c' 中将导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其它 FOREIGN KEY 约束。
[Microsoft][ODBC SQL Server Driver][SQL Server]未能创建约束。请参阅前面的错误信息。


34,590

社区成员

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

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