简体   繁体   English

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

[英]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

  • Using Following Query we can apply 2 Foreign Key for 1 column. 使用以下查询,我们可以为1列应用2个外键。

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)

  • In the Contract Table for column-HospidPharmacyId we can insert common value in both the 在列-HospidPharmacyId的合同表中,我们可以在两者中插入公共值

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM