从同一服务器上的不同数据库连接两个表

时间:2016-01-19 05:45:30

标签: sql sql-server sql-server-2008-r2

是否可以在同一SQL Server 2008 R2实例上连接来自不同数据库的两个表?当一个更新或插入时,另一个表应该自动更新。

示例:

    来自客户数据库的
  • Table 1
  • 来自供应商数据库的
  • Table 2

Table 1中插入内容时,Table 2应使用Table 1的相同数据进行更新。

2 个答案:

答案 0 :(得分:1)

一种方法是在Customer.dbo.Table1数据库中为Supplier创建SYNONYM。然后,您可以像在Supplier数据库中一样查询同义词。

假设您的Customer数据库包含Table1Supplier数据库包含Table2。假设两个表都在dbo模式中。然后,您可以在SQL Server Management Studio(SSMS)中测试以下内容:

USE Supplier; -- Tell SSMS to switch to the Supplier database

CREATE SYNONYM Table1 FOR Customer.dbo.Table1; -- this creates a synonym permanently in the Supplier database; you only need to execute this once

SELECT * FROM Table1; -- select all from Customer.dbo.Table1, from within the context of database Supplier

这样就不需要TRIGGER和相应的开销(你需要3 TRIGGER来保持表同步)。

答案 1 :(得分:0)

USE Customer
GO

CREATE TRIGGER dbo.Table1_AI
   ON dbo.Table1
   AFTER INSERT
AS 
BEGIN
    IF (@@ROWCOUNT = 0)
        RETURN;

    SET NOCOUNT ON;

    UPDATE t2
        SET ColumnX = i.ColumnX, ColumnY = i.ColumnY
        FROM Supplier.dbo.Table2 t2
        INNER JOIN inserted i on i.id = t2.id;
END
GO

考虑您的逻辑,替换ColumnX = i.ColumnX, ColumnY = i.ColumnYi.id = t2.id

相关问题