[英]two columns referencing a single column in another table
A similar question is asked here multiple foreign keys referencing single column in other table but the syntax is not shown in the answer. 这里提出了一个类似的问题, 多个外键引用了其他表中的单列,但语法未在答案中显示。 I would like to know how this can be accomplished in SQL server. 我想知道如何在SQL Server中实现这一点。 The following syntax gives error 以下语法给出错误
ALTER TABLE ItemIssue ADD CONSTRAINT FK_ItemIssue_Person
FOREIGN KEY (PersonID, AdvisorID) REFERENCES Person (PersonID)
;
ERROR: Number of referencing columns in foreign key differs from number of referenced columns, table 'ItemIssue'. 错误:外键中的引用列数与引用列数(表'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),
)
; ;
You need to define two foreign keys, one for each column: 您需要定义两个外键,每列一个:
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)
;
It is impossible to create one foreign key for two columns referencing one column. 为引用一列的两列创建一个外键是不可能的。 Create them seperate: 分开创建它们:
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);
To define two foreign keys, one for each column- 要定义两个外键,每列一个 -
Table 表
Contract - HospidPharmacyId Column 合同 - HospidPharmacyId专栏
Hospice- HospiceID PK Pharmacy PharmacyId Pk Hospice-HospiceID PK Pharmacy PharmacyId Pk
Alter Table Contract Add Constraint fk_pharmacyID Foreign Key ([HospIDPharmID]) references Pharmacy([PharmacyID]) 更改表合同添加约束fk_pharmacyID外键([HospIDPharmID])引用药房([PharmacyID])
Alter TAble contract Add Constraint Fk_hospId Foreign key ([HospIDPharmID]) references Hospice(HospiceID) Alter TAble合同添加约束Fk_hospId外键([HospIDPharmID])引用临终关怀(HospiceID)
tables. 表。 those which are present in hospice & not in Pharmacy then we cant insert that value in 那些存在于临终关怀而不是药房的人,那么我们就无法插入这个价值
contract table & vice versa. 合同表,反之亦然。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.