我可以创建一个有2个外键的表吗?这2个外键是2个不同表的2个主键

问题描述 投票:0回答:1

我计划创建一个带有 2 个外键的表。这 2 个外键引用 2 个不同表的 2 个主键。但是,由于业务原因,两个外键之一可能为空。那么我可以创建这个表吗?

database database-design
1个回答
0
投票

在不知道这是针对哪个 RDBMS 的情况下,语法可能会稍有偏差 - 但可以肯定的是,您绝对可以在一个表中拥有两个外键,引用另外两个表 - 并且当然,其中一个可以为空。然而,您通常引用的两个主表中的referenced主键列不能为NULL;大多数 RDBMS 在主键中不允许

NULL

在 SQL Server 中,您可以进行如下设置:

ALTER TABLE dbo.YourTable
    ADD CONSTRAINT FK_YourFirstForeignKey
        FOREIGN KEY (YourFirstColumn) REFRENCES dbo.MasterTable1(Column1);

ALTER TABLE dbo.YourTable
    ADD CONSTRAINT FK_YourSecondForeignKey
        FOREIGN KEY (YourSecondColumn) REFRENCES dbo.MasterTable2(Column2);

YourTable
必须有两列(假设此处为
INT
数据类型 - 根据需要进行调整):

YourFirstColumn INT NOT NULL,
YourSecondColumn INT NULL

YourFirstColumn
是必填列,而
YourSecondColumn
可以为空。

当然 - 如果您愿意的话,您也可以定义这些 FK 约束并将其直接包含到您的

CREATE TABLE
语句中。

© www.soinside.com 2019 - 2024. All rights reserved.