MSSQL外键关系和Null值

时间:2016-06-10 18:29:43

标签: sql sql-server database

我在将外键添加到外键可以为null的现有表时遇到问题。

假设我有一个用户表和一个数据表。数据表已经在" createdBy"上创建了一个可用的外键。 colum到用户表ID列。我刚刚在数据表中添加了第二列" EditedBy"允许空值(意味着数据记录未被编辑)。因此,所有现有记录都将NULL作为此列的值。

我正在尝试在Data.EditedBy和User.Id之间创建一个外键,但是当我尝试应用它时,我收到以下错误。

  

ALTER TABLE语句与FOREIGN KEY约束冲突" FK_Data_User_EditedBy"。冲突发生在数据库"测试",表" dbo.User",列' Id'。

它看起来像数据表中的NULL值有问题,但NULL是外键的可接受值。

我错过了什么?

更新: 完整陈述如下

USE [Test]
GO

ALTER TABLE [dbo].[Data]  WITH CHECK ADD  CONSTRAINT [FK_Data_User_EditedBy] FOREIGN KEY([Id])
REFERENCES [dbo].[User] ([Id])
GO

1 个答案:

答案 0 :(得分:0)

好吧,我觉得自己像个白痴。我正在使用Management studio来创建关系,在我发布了等效的alter语句(它也没有工作)后,我意识到我试图在[data]的ID字段和ID之间创建一个外键。 [用户]的字段。

显然不会工作。

我修改了语句以使用[data]表中的正确字段,一切都很顺利。