Внешние ключи SQL Server через границы базы данных-методы принудительного применения
У меня есть две отдельные базы данных SQL Server 2005 (на одном сервере)
- база данных
база данных главного приложения
база данных безопасности имеет user таблица со всем необходимым для аутентификации. -
- база данных приложения имеет таблица с расширенными пользовательскими данными. Существует 1-1 сопоставление между пользовательской таблицей базы данных безопасности и применение таблицы базы данных.
Я хочу применить сопоставление между Пользователем и таблицей person. Я предполагаю, что внешние ключи не могут быть сопоставлены между базами данных, поэтому мне интересно, что делать, чтобы обеспечить целостность отношений.
2 ответов
перекрестные внешние ключи базы данных действительно не поддерживаются
Msg 1763, Level 16, State 0, Line 2
Cross-database foreign key references are not supported.
Если вы действительно хотите, чтобы обеспечить целостность данных на стороне базы данных, вам придется полагаться на триггеры. (что я не рекомендую)
чтобы сделать ваш код более обслуживаемым, вы можете создать синонимы для таблиц, в которых вы хотите проверить ссылочную целостность.
CREATE SYNONYM myTable FOR otherdatabase.dbo.myTable;
Это было бы сделать" ручные " проверки проще, так как вы не можете создавать внешние ключи на синониме.
Это много работы, но вы можете подумать о слиянии этих двух баз данных в одну базу данных. Если вам нужна логическая разница между объектами в базе данных, вы можете использовать - схемы.