Проблема ограничения внешнего ключа - PullRequest
0 голосов
/ 20 марта 2012

Что могло вызвать ошибку FK? Я вставляю запись «Activity» в базу данных, в которой есть поле «StaffId» (FK с таблицей Staff), я искал нужный StaffId (без пробелов и т. Д.), И он существует. Что еще может вызвать ошибку с полем внешнего ключа?

РЕДАКТИРОВАТЬ: Ошибка:

Оператор INSERT конфликтовал с ограничением FOREIGN KEY "FK_Activities_Staff". Конфликт произошел в базе данных «DataWarehouseB», таблица «dbo.Staff», столбец «StaffId». Заявление было прекращено.

1 Ответ

2 голосов
/ 20 марта 2012

Внешний ключ SQL Документация гласит:

Если схема базы данных содержит ошибки внешнего ключа, для определения которых требуется более одного определения таблицы, то эти ошибки не обнаруживаются, когдатаблицы созданы.Вместо этого такие ошибки не позволяют приложению подготовить операторы SQL, которые изменяют содержимое дочерних или родительских таблиц способами, использующими внешние ключи.Ошибки, сообщаемые при изменении содержимого, представляют собой «ошибки DML», а ошибки, сообщаемые при изменении схемы, - «Ошибки DDL».Таким образом, другими словами, неправильно настроенные ограничения внешнего ключа, которые требуют рассмотрения как дочернего, так и родительского, являются ошибками DML.Сообщение об ошибке на английском языке для ошибок DML внешнего ключа обычно является «несоответствием внешнего ключа», но также может быть «нет такой таблицы», если родительская таблица не существует.Ошибки DML внешнего ключа могут сообщаться, если:

  • Родительская таблица не существует.
  • Столбцы родительского ключа, названные в ограничении внешнего ключа, не существуют.
  • Столбцы родительского ключа, названные в ограничении внешнего ключа, не являются первичным ключом родительской таблицы и не подчиняются уникальному ограничению с использованием последовательности упорядочения, указанной в CREATE TABLE.
  • Дочерняя таблица ссылается на первичный ключ родительского элемента без указания столбцов первичного ключа, а количество столбцов первичного ключа в родительском элементе не соответствует количеству столбцов дочернего ключа.

Некоторые БД могут также поддерживать использование неуникального индекса в качестве ссылки на внешний ключ ,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...