SQL Server 2005无法创建关系,因为它与自身冲突(?)

时间:2012-07-30 18:07:32

标签: sql sql-server sql-server-2005

考虑以下表格(省略了不必要的字段)以及我正在尝试创建的关系:

 Contractor__c               |Task                 |Account
|----------------------------|---------------------|---------------|
|Contractor__c NCHAR(18) NULL|WhatId NCHAR(18) NULL|Id NCHAR(18) PK|
|Id            NCHAR(18) PK  |                     |               |

 FK_Contractor__c_Account
|--------------------------------------|
|PK        |FK                         |
|----------|---------------------------|
|Account.Id|Contractor__c.Contractor__c|

 FK_Task_Contractor__c
|----------------------------|
|PK              |FK         |
|----------------|-----------|
|Contractor__c.Id|Task.WhatId|

听起来很简单,但这两种关系都无法保存到数据库中,我得到以下两个错误:

  

无法创建关系'FK_Contractor__c_Account'。改变   TABLE语句与FOREIGN KEY约束冲突   “FK_Contractor__c_Account”。冲突发生在数据库中   “承包商”,表“dbo.Account”,列“Id”。

     

无法创建关系'FK_Task_Contractor__c'。改变   TABLE语句与FOREIGN KEY约束冲突   “FK_Task_Contractor_ C”。冲突发生在数据库中   “承包商”,表“dbo.Contractor _c”,列'Id'。

我理解这些消息因为它无法创建关系,因为它与存在同名的关系冲突,即使实际上没有一个。有人可以告诉我这里发生了什么吗?

对于任何关心的人,我使用的是SQL Server 2005 SP4(9.0.5057),并且这些表是使用DBAmp从Salesforce链接服务器创建的。

2 个答案:

答案 0 :(得分:3)

此错误消息表示某些数据不满足约束。这并不意味着发生了一些基于模式的冲突。

答案 1 :(得分:0)

我遇到了同样的问题......我进入了我的主表,在三个表中找到了0个id,这些表提供了下拉列表...我将0更改为表中的值并且wala ...没有其他问题。 ..