我有两个独立的 SQL Server 2005 数据库(在同一服务器上):
- 安全数据库
主应用程序数据库
安全数据库有一个包含所有身份验证所需信息的用户表。
- 应用程序数据库有一个包含扩展用户详细信息的人员表。安全数据库用户表与应用程序数据库人员表之间存在1对1的映射关系。
我想要强制执行用户和人员表之间的映射关系。我认为外键不能跨数据库进行映射,因此我想知道该怎么做才能保证关系的完整性。
我有两个独立的 SQL Server 2005 数据库(在同一服务器上):
主应用程序数据库
安全数据库有一个包含所有身份验证所需信息的用户表。
我想要强制执行用户和人员表之间的映射关系。我认为外键不能跨数据库进行映射,因此我想知道该怎么做才能保证关系的完整性。
跨数据库外键确实不受支持。
Msg 1763, Level 16, State 0, Line 2
Cross-database foreign key references are not supported.
如果您真的想在数据库端强制执行引用完整性,您将不得不依赖于触发器。(我不建议这样做)
为了使您的代码更易于维护,您可以为要检查引用完整性的表创建同义词。
CREATE SYNONYM myTable FOR otherdatabase.dbo.myTable;
这样做是为了使“手动”检查更容易,因为你无法在同义词上创建外键。