Sql-Server

如何強制執行可為空的外鍵?

  • August 13, 2021

我有兩個表之間的關係。外鍵表可以在主表中有行相關。有一種方法可以強制 FK 列的值為 NULL 或主表中 PK 列的值之一?

是的,您可以允許外鍵列為 NULL,使其成為可選關係。

CREATE TABLE dbo.foo(fooid INT PRIMARY KEY);

CREATE TABLE dbo.bar(barid INT PRIMARY KEY,
 fooid INT NULL FOREIGN KEY REFERENCES dbo.foo(fooid));

INSERT dbo.foo SELECT 1;
INSERT dbo.bar SELECT 1,1;
INSERT dbo.bar SELECT 2,NULL; -- succeeds
GO
INSERT dbo.bar SELECT 3,2; -- fails

如果這不是您的意思,請詳細說明或重新提出您的問題。

引用自:https://dba.stackexchange.com/questions/40924