0

我有一个公司表,其中包含与我的公司有业务往来的所有公司,并且它驻留在公司数据库中。

我想在该表和另一个完全不同的数据库(人事数据库)中的表(人事表)之间建立关系。

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

我如何实现这一目标?

4

2 回答 2

1

“尽管在这种情况下您不能使用外键,但有一些变通方法——您可以使用包含在检查约束中的触发器或 UDF。无论哪种方式,您的数据完整性都不是完全无懈可击的:如果您的父表所在的数据库崩溃并且您恢复它来自备份,您可能很容易以孤儿告终。”

来自不同数据库的表上的外键

于 2012-04-21T21:24:29.457 回答
0

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

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

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

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