我有一个列检查列上的FK约束并允许NULL。但是,即使主表中没有ID为0的行,也允许0作为值。
此插入发生在使用.NET的批量插入上。但是,如果我将值更改为有效数字并在SQL Server中直接返回0,那么它将不允许它。
所以不知何故,批量插入允许允许0,有原因吗?
答案 0 :(得分:4)
默认情况下,BULK INSERT
会忽略检查和外键约束。您可以使用CHECK_CONSTRAINTS
打开它们。
文档中对此进行了解释:
CHECK_CONSTRAINTS
指定目标表或视图上的所有约束必须是 在批量导入操作期间检查。没有 CHECK_CONSTRAINTS选项,任何CHECK和FOREIGN KEY约束 忽略,并在操作后,对表的约束是 标记为不信任。