[英]SQL Foreign Key Constraint or a static value?
我有兩個表:
我想在Customer
上放置一個外鍵約束,以便HomeAddressId有效,但是我也想允許-1作為有效值(即使它不是Address.Id
值之一)。 這實際上可行嗎? 而且,如果是的話……怎么辦?
否。外鍵是絕對的,外鍵中的值必須存在於它所引用的主鍵中。
但是,您可以將外鍵列聲明為NULLable,然后將NULL用作“未知”或“未定義”值。
如果是這種情況,為什么不只在Customers
表的HomeAddressID
上允許null
值? 但是仍然在其上添加外鍵約束。
CREATE TABLE Customer
(
Id INT,
Name VARCHAR(50),
HomeAddressId INT NULL,
CONSTRAINT tb_fk FOREIGN KEY (HomeAddressId) REFERENCES Address(ID)
)
您不能這樣做,也不應這樣做。 由於這是外鍵約束的主要規則,因此要確保數據的一致性。
可能是您需要添加一個新列,例如IsValid
作為該列值有效性的標志
以上答案中的解決方案是正確的方法。 但是,如果您仍要堅持使用-1方法,請在“地址”表中創建一個默認條目,其ID為-1,所有其他列為null或“未知”。 這樣,您的外鍵約束才有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.