Создать внешний ключ без проверки существующих данных - PullRequest
2 голосов
/ 11 августа 2010

Это вопрос из 2 частей.

Вопрос 1: Я пытаюсь создать внешний ключ для таблицы, где мне нужно отключить «Проверка существующих данных при создании или повторном включении». Я знаю, что есть вариант визуально, но я ищу способ сделать это программно. Есть ли способ сделать это?

Вопрос 2: У меня есть таблица кодов и две таблицы A и B, которые должны ссылаться на эту таблицу кодов. Я хочу, чтобы на оба они ссылались из таблицы отношений, но я хочу использовать один и тот же столбец. Могу ли я иметь 2 внешних ключа, указывающих на один и тот же столбец?

1 Ответ

10 голосов
/ 11 августа 2010

Да, вы можете иметь один и тот же столбец в родительской таблице, ссылаясь на разные столбцы в нескольких таблицах.

Я не рекомендую отключать проверку FK при создании.Если у вас плохие данные сейчас, вам нужно исправить это сейчас.В противном случае, когда кто-то в первый раз редактирует одну из этих записей, он провалит проверку FK.

Из книг в Интернете о том, почему плохая идея использовать nocheck:

Если вы не хотите проверять новые ограничения CHECK или FOREIGN KEY на существующие данные, используйте WITH NOCHECK,Мы не рекомендуем делать это, за исключением редких случаев.Новое ограничение будет оцениваться во всех последующих обновлениях данных.Любые нарушения ограничений, которые подавляются WITH NOCHECK при добавлении ограничения, могут привести к сбою будущих обновлений, если они обновят строки данными, которые не соответствуют ограничению.

...