我计划创建一个带有 2 个外键的表。这 2 个外键引用 2 个不同表的 2 个主键。但是,由于业务原因,两个外键之一可能为空。那么我可以创建这个表吗?
在不知道这是针对哪个 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
语句中。