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



这里提出了一个类似的问题 多个外键引用其他表中的单个列但是语法没有显示在答案中。我想知道如何在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),
)

;

您需要定义两个外键,每列一个:

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

定义两个外键,每列一个

桌子

合约 - 医院药房 ID 栏目

临终关怀 - 临终关怀ID PK药房 药房ID PK

  • 使用以下查询,我们可以为 1 列应用 2 个外键。

更改表协定添加约束fk_pharmacyID外键 ([HospIDPharmID]) 引用 Pharmacy([PharmacyID])

更改标签合约添加约束Fk_hospId外键 ([HospIDPharmID]) 引用 临终关怀(临终关怀ID)

  • 在列-HospidPharmacyId 的合同表中,我们可以在两个

那些存在于临终关怀中而不是在药房中的表格,那么我们不能将该值插入

合约表,反之亦然。

相关内容

最新更新