这里提出了一个类似的问题 多个外键引用其他表中的单个列但是语法没有显示在答案中。我想知道如何在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 的合同表中,我们可以在两个
那些存在于临终关怀中而不是在药房中的表格,那么我们不能将该值插入
合约表,反之亦然。