【急】SQL 外键建立 ALTER TABLE语句与FOREIGN KEY约束"FK_B_A"冲突.该冲突发生于数据库"C",表"dbo.A" 50

SQL数据库C中两张表A(a1,a2,a3,a4,a5)和B(b1,b2,b3,b4,b5,b6),将a1,a2,a3共同作为A主键,b1,b2作为B主键,想将b1,b2... SQL数据库C中两张表A(a1,a2,a3,a4,a5)和B(b1,b2,b3,b4,b5,b6),将a1,a2,a3共同作为A主键,b1,b2作为B主键,想将b1,b2同样作为外键,指向A中的a1,a2,但由于A中的主键是a1,a2,a3,是否有必要为此给B添加一列以匹配a3???本人对数据库了解不深,为以防万一,已做此工作,但出现如题目所描述的问题~~~上网查了一下,说是由于B中数据没有在A中找到,所以我特意将B中数据(b1,b2,以及为匹配a3刻意添加的属性)完全复制到A中,但还是出现这个问题~~~所以,很不理解~~~~是不是不能将B的主键作为外键?如果可以,那么出现这个问题的原因又是什么?如果不可以,那我要怎么做才能完成对B中数据在A中的检验呢?本人使用SQL Server 2008,利用界面直接添加主键~~~希望各位大神帮忙一下~~~ 展开
 我来答
Mida米达看评论
2014-11-17 · TA获得超过519个赞
知道小有建树答主
回答量:164
采纳率:89%
帮助的人:23.2万
展开全部

我的问题解决,是因为数据表中的记录不是一一对应的,经过清空或者删除不对应的数据记录,建立了关系,建议你操作如下:

  1. 数据表结构一致性检查:必须清空或者整理两张表的数据,保证一对一,空对空;保证两张表主键和外键的类型相同,int=>int,smallint=>smallint等等,非空对非空

  2. 检查是否已经存在外键关系,存在就改关系名

  3. 建议删除原表,重新建立新表重做关系

nietiezheng
2013-10-26 · TA获得超过5536个赞
知道大有可为答主
回答量:3132
采纳率:87%
帮助的人:1180万
展开全部
如果是要声明外键,则必须包括a1,a2,a3三个属性,而且插入数据的时候B中元组的外键属性必须是A中出现的组合才行,不能是每个外键属性上仅有对应的值。
如果只是希望b1对应a1,b2对应a2,则添加check约束,而不是外键约束
追问
您好,也就是说主表A必须包含a1,a2,a3的属性,外键表B也必须包含与之对应的相应属性,是吧?我早晨已经试过了,还是出现这样的问题~~~我把B中相应的属性完全复制到A中,在执行,还是出现这样的问题~~~那这是什么原因呢?
追答
因为是B参照A,所以需要先在A中存在相应的属性值,然后才能在B中插入对应的属性值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式