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

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,利用界面直接添加主键~~~希望各位大神帮忙一下~~~

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

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

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

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


如果是要声明外键,则必须包括a1,a2,a3三个属性,而且插入数据的晌宴时候B中元组的外键属性必须是A中出现的组合才行,不能是每个培桐外键属性上仅有对应的值。
如配谨坦果只是希望b1对应a1,b2对应a2,则添加check约束,而不是外键约束