次の表(不要なフィールドは省略されています)と、作成しようとしている関係について考えてみます。
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'を作成できません。ALTERTABLEステートメントがFOREIGNKEY制約「FK_Contractor__c_Account」と競合しました。データベース「Contractors」、テーブル「dbo.Account」、列「Id」で競合が発生しました。
関係'FK_Task_Contractor__c'を作成できません。ALTERTABLEステートメントがFOREIGNKEY制約「FK_Task_Contractor_c」と競合しました。データベース「Contractors」、テーブル「dbo.Contractor _c」、列「Id」で競合が発生しました。
メッセージは、実際には存在しないのに、同じ名前の関係と競合しているため、関係を作成できないと理解しています。誰かがここで何が起こっているのか私に教えてもらえますか?
気になる人のために、私はSQL Server 2005 SP4(9.0.5057)を使用しており、テーブルはDBAmpを使用してSalesforceリンクサーバーから作成されます。