簡體   English   中英

兩列引用另一個表中的單個列

[英]two columns referencing a single column in another table

這里提出了一個類似的問題, 多個外鍵引用了其他表中的單列,但語法未在答案中顯示。 我想知道如何在SQL Server中實現這一點。 以下語法給出錯誤

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),
)

;

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

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)
;

為引用一列的兩列創建一個外鍵是不可能的。 分開創建它們:

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);

要定義兩個外鍵,每列一個 -

合同 - HospidPharmacyId專欄

Hospice-HospiceID PK Pharmacy PharmacyId Pk

  • 使用以下查詢,我們可以為1列應用2個外鍵。

更改表合同添加約束fk_pharmacyID外鍵([HospIDPharmID])引用葯房([PharmacyID])

Alter TAble合同添加約束Fk_hospId外鍵([HospIDPharmID])引用臨終關懷(HospiceID)

  • 在列-HospidPharmacyId的合同表中,我們可以在兩者中插入公共值

表。 那些存在於臨終關懷而不是葯房的人,那么我們就無法插入這個價值

合同表,反之亦然。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM