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