无法建立关系

时间:2016-03-17 14:15:42

标签: sql-server database

我的订单表格中有一个resellerID列作为Nullable整数。在大多数记录中resellerID NULL ,有时它包含与经销商表关联的整数,其中包含resellerID和{{1列。

当我尝试在两个resellerName之间添加关系时,我收到以下错误:

resellerID

问题是- Unable to create relationship 'FK_Orders_Resellers'. The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_Orders_Resellers". The conflict occurred in database "sales", table "dbo.Resellers", column 'resellerID'. 列的可空性质吗?这是一个糟糕的设计选择吗?我该怎么办才能像专业人士一样修复?

数据库是由一位程序员设计的,该程序员离开了公司,可能我想修复它。

感谢。

编辑:即使Orders.resellerID列仅包含 NULL 值,也会发生错误。

3 个答案:

答案 0 :(得分:0)

订单表中的值null在您的转销商表中不可用,创建一个未在名称中指定的转销商,并将此值添加到订单表中,然后创建关系。

答案 1 :(得分:0)

您应该为转销商创建一个默认值,当订单表没有经销商的价值时,应该引用该默认值。有点像这样:

  1. 将orders表中的所有NULL替换为-1。 UPDATE Orders SET resellerID = -1 WHERE resellerID IS NULL
  2. 将默认值插入Resellers表。 INSERT INTO Resellers (resellerID, resellerName) VALUES (-1, '');
  3. 申请你的FK。
  4. 将所有加载Orders.resellerID的代码更改为COALESCE(resellerID, -1) 设置Orders.resellerID列的默认值

答案 2 :(得分:0)

问题一如既往地发生在列数据中。