与外部SQL Server数据库建立关系

时间:2012-04-21 21:22:25

标签: sql sql-server

我有一张公司表,其中包含与我公司有业务往来的所有公司,并且它位于公司数据库中。

我想在该表与另一个表(人员表)之间创建一个关系,该表位于一个完全不同的数据库(人事数据库)中。

两个数据库都在同一台服务器上。

我如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

“虽然在这种情况下你不能使用外键,但有一些解决方法 - 您可以使用包含在检查约束中的触发器或UDF。无论哪种方式,您的数据完整性都不是完全不透水的:如果父表的数据库崩溃并且你从备份中恢复它,你可能很容易找到孤儿。“

foreign keys on table from different database

答案 1 :(得分:0)

要使用公共密钥选择数据,您可以创建包含三部分限定符的视图:database-schema-table。下面我假设每个人员条目都有一个将它们联系在一起的CompanyID字段,而dbo就是模式。如果这样的字段不存在,您将需要创建并填充一个字段:

CREATE VIEW vCompanyPersonnel AS SELECT * FROM tblCompany t1 JOIN dbPersonnel.dbo.tblPersonnel t2 ON t1.ID = t2.CompanyID

同样,为了对表进行更新并保持参照完整性,您需要创建存储过程,并且只允许应用程序使用这些过程更新数据(无论如何这是最佳实践)。您还应确保人员表中的CompanyID字段不允许空值。一些要考虑的过程:

  • 添加人员:需要一个CustomerID输入参数,并确保它存在于Company表中。如果没有,RAISERROR。
  • 删除/停用客户:同时删除/停用所有相关人员,最好将整个流程包含在交易中(全部或全部)。