是否可以在同一SQL Server 2008 R2实例上连接来自不同数据库的两个表?当一个更新或插入时,另一个表应该自动更新。
示例:
Table 1
Table 2
在Table 1
中插入内容时,Table 2
应使用Table 1
的相同数据进行更新。
答案 0 :(得分:1)
一种方法是在Customer.dbo.Table1
数据库中为Supplier
创建SYNONYM
。然后,您可以像在Supplier
数据库中一样查询同义词。
假设您的Customer
数据库包含Table1
,Supplier
数据库包含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.ColumnY
和i.id = t2.id
。