SQL Server 2005中无法创建关系,因为它是冲突与自身

问题描述:

考虑以下表(不必要的字段省略)和关系,我试图创建(?):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'。 ALTER TABLE语句与FOREIGN KEY约束冲突 “FK_Contractor__c_Account”。冲突发生在数据库 “承包商”,表“dbo.Account”,列'Id'。

无法创建关系'FK_Task_Contractor__c'。 ALTER TABLE语句与FOREIGN KEY约束条件冲突 “FK_Task_Contractor_ c”。冲突发生在数据库 “承包商”,表“dbo.Contractor_c”,列'Id'。

我在理解这些消息,因为它无法创建关系,因为它与具有相同名称的关系冲突,尽管实际上并没有这样的关系。有人能告诉我这里发生了什么吗?

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

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

+0

我也是这么想的。是否因为某些列可以为空? – Gup3rSuR4c 2012-07-30 18:11:20

+1

FK跳过空值。编写一个左连接查询来找出哪些数据没有被匹配。 – usr 2012-07-30 18:20:52

+0

那么,我做了一个LEFT JOIN和JOIN在关系正常和颠倒的表格之间。没有人犯错,所以我仍然试图找出问题所在。 – Gup3rSuR4c 2012-07-30 18:55:47

我有同样的问题...我进入我的主表,并发现在三个表中填充下拉列表0代表id ...我改变了0表中的值和瓦拉...没有更多的问题...