Ссылка внешнего ключа на таблицу в другой схеме

Я пытался создать внешний ключ на одной из моих таблиц, ссылаясь на столбец таблицы в другой схеме.

Что-то как этот:

ALTER TABLE my_schema.my_table ADD (
  CONSTRAINT my_fk
    FOREIGN KEY (my_id)
    REFERENCES other_schema.other_table(other_id)
)

Так как у меня были необходимые предоставления, это хорошо работало.

Теперь интересно, существуют ли причины того, что не были сосланы на таблицы в другой схеме или чем-нибудь, чтобы быть осторожными относительно?

48
задан Peter Lang 19 January 2010 в 16:59
поделиться

5 ответов

Нет проблем. Схемы действительно не оказывают влияния при создании внешних ключевых отношений между таблицами. Просто убедитесь, что соответствующие у людей есть разрешения, необходимые для схем, которые вы намерены использовать.

47
ответ дан 26 November 2019 в 19:00
поделиться

Без проблем. Схемы действительно не влияют на установление связей внешних ключей между таблицами. Просто убедитесь, что соответствующие пользователи имеют необходимые разрешения для схем, которые вы собираетесь использовать.

-121--1105173-

можно заключить зарезервированные слова в квадратные скобки, чтобы избежать таких ошибок:

dbo.TableName.[Date]
-121--635802-

Это будет работать точно как внешний ключ, который ссылается на таблицу в собственной схеме.

Как и в случае обычных внешних ключей, не забудьте индексировать мой _ id , если родительский ключ когда-либо обновлялся или если вы удаляете записи из родительской таблицы (неиндексированные внешние ключи могут быть источником массового конфликта, и индекс обычно в любом случае полезен).

5
ответ дан 26 November 2019 в 19:00
поделиться

Одной из причин это может вызвать проблемы, вы должны быть осторожны, чтобы удалить вещи в правильном порядке. Это может быть хорошо или плохо в зависимости от того, насколько важно никогда не иметь сирот в ваших таблицах.

1
ответ дан 26 November 2019 в 19:00
поделиться

Единственное, что я столкнулся с тем, что разрешение существовало на другой схеме. Обычные вещи - если эти разрешения (ы) исчезают по какой-либо причине, вы услышите об этом.

4
ответ дан 26 November 2019 в 19:00
поделиться

, если вы в организации, где разные люди имеют власть над разными схемами Я думаю, что это хорошая практика, чтобы дать другую схему возможность отключить или даже падать и воссоздать ваше ограничение.

Например, им может потребоваться отбросить или обрезать их стол, а затем перезагрузить его для обработки некоторой (очень странной) проблемы поддержки. Если вы не хотите вызвать в середине ночи, я рекомендую дать им возможность временно удалить ваше ограничение. (Я также рекомендую установить свои собственные оповещения, чтобы вы узнали, если какие-либо ваши внешние ограничения отключены или сброшены). Когда вы пересекаете организационные / схемы, вы хотите хорошо играть с другими. Индекс, который упоминал Винсент, является еще одной частью этого.

5
ответ дан 26 November 2019 в 19:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: