Sql 两列引用另一个表中的单个列

Sql 两列引用另一个表中的单个列,sql,sql-server,foreign-keys,foreign-key-relationship,Sql,Sql Server,Foreign Keys,Foreign Key Relationship,这里也提出了类似的问题 但答案中没有显示语法。我想知道如何在SQL server中实现这一点。下面的语法给出了错误 ALTER TABLE ItemIssue ADD CONSTRAINT FK_ItemIssue_Person FOREIGN KEY (PersonID, AdvisorID) REFERENCES Person (PersonID) ; 错误:外键中引用列的数量与表“ItemIssue”中引用列的数量不同 -- Create Tables CREATE TABLE I

这里也提出了类似的问题 但答案中没有显示语法。我想知道如何在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列

临终关怀-临终关怀PK 药剂师

  • 使用以下查询,我们可以为1列应用2个外键
变更表合同 添加约束fk_pharmacyID外键([HospIDPharmID])引用药房([pharmacyID])

变更表合同 添加约束Fk_hospId外键([HospIDPharmID])引用Hospice(HospiceID)

  • 在HospidPharmacyId列的合同表中,我们可以在
桌子。那些存在于临终关怀院而非药房的患者,我们不能将该值插入


合同表,反之亦然。

谢谢您的评论。我研究了这个主题,但我不知道为什么两个外键要用于另一个表的一列?你能解释一下吗?