2014-02-19 93 views
0

引用一列類似的問題在這裏multiple foreign keys referencing single column in other table 要求,但語法沒有在回答中。我想知道如何能在SQL服務器來完成。下面的語法提示錯誤兩列另一個表

ALTER TABLE ItemIssue ADD CONSTRAINT FK_ItemIssue_Person 
FOREIGN KEY (PersonID, AdvisorID) REFERENCES Person (PersonID) 
; 

錯誤:從所引用的列數量的參考外鍵的不同列數,表「ItemIssue」。

-- Create Tables 
CREATE TABLE ItemIssue ( 
ItemIssueID int identity(1,1) NOT NULL, 
PersonID int, 
AdvisorID int, 
    ) 
; 
CREATE TABLE Person ( 
PersonID int NOT NULL, 
Name nvarchar(500), 
) 

;

回答

2

您需要定義兩個外鍵,每列一個:

ALTER TABLE ItemIssue ADD CONSTRAINT FK_ItemIssue_Person 
    FOREIGN KEY (PersonID) REFERENCES Person (PersonID) 
; 

ALTER TABLE ItemIssue ADD CONSTRAINT FK_ItemAdvisor_Person 
    FOREIGN KEY (AdvisorID) REFERENCES Person (PersonID) 
; 
+0

感謝對此事發表評論。我研究這個話題,但我不知道爲什麼對另一個表的一列做兩個外鍵?你解釋一下嗎? – Mesuti

0

這是不可能創造兩列引用一個列有一個外鍵。他們創建單獨的:

ALTER TABLE ItemIssue 
ADD CONSTRAINT FK_ItemIssue_Person_Person FOREIGN KEY (PersonID) REFERENCES Person (PersonID), 
ADD CONSTRAINT FK_ItemIssue_Advisor_Person FOREIGN KEY (AdvisorID) REFERENCES Person (PersonID); 
0

定義兩個外鍵,每個列〜

合同 - HospidPharmacyId列

Hospice- HospiceID PK 藥房PharmacyId PK

  • 使用下面的查詢,我們可以申請2外鍵的1列。

ALTER TABLE合同 添加約束fk_pharmacyID外鍵([HospIDPharmID])引用藥房([PharmacyID])

阿爾特合同表 添加約束Fk_hospId外鍵([HospIDPharmID])引用臨終關懷(HospiceID)

  • 在用於列HospidPharmacyId合同表我們可以插入在兩個
共同的價值210個

表。那些在臨終關懷&不在藥房然後我們無法插入該值

合同表&反之亦然。

相關問題