我们可以构建T SQL触发器来更改另一个数据库中的表

时间:2011-10-31 10:55:16

标签: sql-server-2008 triggers

我正在使用SQL Server 2008,我想在我的第一个数据库中创建一个更新后的触发器,它会在另一个数据库中更改它的数据。 可以这样做,怎么做? 请帮我解释一下代码

感谢

1 个答案:

答案 0 :(得分:0)

您的数据库是否位于同一服务器实例上?如果是,那么只需使用数据库名称限定引用(例如[Database]。[schema]。[Table])。这似乎有效(我有一个名为Staging的数据库,另一个名为Tom):

USE [Staging]
GO

CREATE TABLE [dbo].[Test]
(
    [Name] VARCHAR(50)
)
GO

INSERT [dbo].[Test] VALUES ('START')
GO

USE [Tom]
GO

CREATE TABLE [dbo].[Test]
(
    [Name] VARCHAR(50)
)
GO

INSERT [dbo].[Test] VALUES ('START')
GO

USE [Staging]
GO

CREATE TRIGGER [dbo].[TestTrigger]
ON [dbo].[Test]
AFTER UPDATE
AS
    UPDATE  [Tom].[dbo].[Test] -- Qualified with database name
    SET     [Name] = 'UPDATED FROM [dbo].[TestTrigger]'
GO

UPDATE  [dbo].[Test]
SET     [Name] = 'Testing'
GO

SELECT * FROM [Tom].[dbo].[Test]
GO

DROP TABLE [Staging].[dbo].[Test]
DROP TABLE [Tom].[dbo].[Test]
GO