У меня есть столбец, который проверяет ограничения FK на столбце и разрешает NULL. Тем не менее, он допускает значение 0, даже если в первичной таблице нет строки для идентификатора 0.
Эта вставка происходит на массовой вставке с .NET. Однако, если я изменю значение на действительное число и вернусь к 0 в SQL Server напрямую, оно не позволит этого.
Так почему-то основная вставка позволяет разрешить 0, есть ли причина?
По умолчанию BULK INSERT
игнорирует ограничения проверки и внешнего ключа. Вы можете включить их, используя CHECK_CONSTRAINTS
.
Это объясняется в документации:
CHECK_CONSTRAINTS
Указывает, что все ограничения в целевой таблице или представлении должны быть проверены во время операции массового импорта. Без опции CHECK_CONSTRAINTS любые ограничения CHECK и FOREIGN KEY игнорируются, а после операции ограничение в таблице помечено как ненадежное.