外键列允许SQL Server中的0来自批量插入

时间:2018-03-28 05:26:41

标签: sql .net sql-server foreign-keys sqlbulkcopy

我有一个列检查列上的FK约束并允许NULL。但是,即使主表中没有ID为0的行,也允许0作为值。

此插入发生在使用.NET的批量插入上。但是,如果我将值更改为有效数字并在SQL Server中直接返回0,那么它将不允许它。

所以不知何故,批量插入允许允许0,有原因吗?

1 个答案:

答案 0 :(得分:4)

默认情况下,BULK INSERT会忽略检查和外键约束。您可以使用CHECK_CONSTRAINTS打开它们。

文档中对此进行了解释:

  

CHECK_CONSTRAINTS

     

指定目标表或视图上的所有约束必须是   在批量导入操作期间检查。没有   CHECK_CONSTRAINTS选项,任何CHECK和FOREIGN KEY约束   忽略,并在操作后,对表的约束是   标记为不信任。