Я могу создать Внешние ключи через Базы данных?

У нас есть 2 базы данных - DB1 и DB2.

Я могу составить таблицу в DB1, который имеет отношение с одной из таблиц в DB2? Другими словами, у меня может быть Внешний ключ в моей таблице от другой базы данных?

Я соединяюсь с этими базами данных с различными пользователями. Какие-либо идеи?

Прямо сейчас я получаю ошибку:

РТЫ-00942:Table или представление не существуют

7
задан Brad Werth 5 September 2012 в 06:08
поделиться

2 ответа

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

9
ответ дан 6 December 2019 в 11:46
поделиться

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

Это работает. Но это может привести к некоторым проблемам. Во-первых, если вам когда-либо понадобится полностью обновить материализованное представление, вам нужно будет отключить ограничение, прежде чем делать это. В противном случае Oracle не сможет удалить строки в MV до ввода новых строк.

Во-вторых, вы можете столкнуться с некоторыми задержками по времени. Например, скажем, вы добавляете запись в главную таблицу на удаленном сайте. Затем вы хотите добавить дочернюю запись в локальную таблицу. Но клип будет обновляться ежедневно, а этого еще не произошло. Вы получите нарушение внешнего ключа просто потому, что MV не обновился.

Если вы пойдете по этому пути, ваш самый безопасный подход - настроить MV на быстрое обновление при фиксации главной таблицы. Это будет означать, что соединение с БД должно оставаться открытым почти все время. И у вас будет работа администратора, если вам когда-нибудь понадобится выполнить полное обновление.

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

8
ответ дан 6 December 2019 в 11:46
поделиться
Другие вопросы по тегам:

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