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代表id ...我改变了0表中的值和瓦拉...没有更多的问题...
我也是这么想的。是否因为某些列可以为空? – Gup3rSuR4c 2012-07-30 18:11:20
FK跳过空值。编写一个左连接查询来找出哪些数据没有被匹配。 – usr 2012-07-30 18:20:52
那么,我做了一个LEFT JOIN和JOIN在关系正常和颠倒的表格之间。没有人犯错,所以我仍然试图找出问题所在。 – Gup3rSuR4c 2012-07-30 18:55:47