当null为null时,它在Context中

时间:2014-06-22 06:02:14

标签: tsql sql-server-2008-r2

当我在列smuId列的数据库中显式插入空值时,这是一个有趣的问题:

INSERT [tblTyreHistory]
(
    [changetype], [datechanged], [fitterid],[isfitted],  
    [position], [reason],[MachineId], [rimid], [tyreid], [userid], [smuId]
)
    VALUES (1,'2014-05-19 00:00:00',86,1,1,NULL,95,NULL,5699,86,NULL)

插入按预期工作。但是,如果我从插入中省略了列smuId,我会得到一个外键约束:

INSERT [tblTyreHistory]
(
    [changetype], [datechanged], [fitterid],[isfitted],  
    [position], [reason],[MachineId], [rimid], [tyreid], [userid]
)
    VALUES (1,'2014-05-19 00:00:00',86,1,1,NULL,95,NULL,5699,86)

这导致了问题:

  

INSERT语句与FOREIGN KEY约束“FK_tblTyreHistory_tblSmu”冲突。冲突发生在数据库“myDB”,表“dbo.tblSmutable”,列'id'。

有没有人有任何想法?

1 个答案:

答案 0 :(得分:4)

可能是否有为smbId列指定的默认值,而tblSmutable中没有该值?这将导致smudd使用默认值而不是NULL进行填充,并且会出错。