从两个不同的数据库触发两个表以插入数据(SQL Server)

时间:2016-04-22 09:30:16

标签: sql-server database tsql stored-procedures triggers

标题说的是,我想将数据从数据库插入另一个数据库。第一个数据库“DB1”是源,第二个数据库“DB2”是目标。

相关表格定义如下:

DB1 => tbl_Target

==================================
Id | Date | Name | Age | Num_Aucts
==================================

DB2 => tbl_Source

======================
Name | Age | Num_Aucts
======================

好吧,tbl_Source包含40行数据。我需要将这些行转移到tbl_Target。但是,您如何看到tbl_Target还有两列IdDateId会自动设置。重要的列是Date。在此列中,我想设置当前日期。在这种情况下从今天开始。如何在SQL Server中使用T-SQL在触发器中定义它?

我已经开始朝这个方向发展了:

USE DB1
GO

CREATE TRIGGER trg_Insert_tblSource ON tbl_Source
FOR INSERT AS
BEGIN
    INSERT INTO DB2.dbo.tbl_Target ([Date], [Name], [Age], [Num_Aucts])
        SELECT ??? // How to get the current date?

任何人都可以帮助我吗?我需要存储过程吗?

2 个答案:

答案 0 :(得分:2)

我不知道我是否完全理解你的问题。但是,如果您只想将数据从一个表格传输到另一个表格,则不需要触发器。您可以使用简单的INSERT...SELECT

来实现此目的
INSERT INTO DB2.dbo.tbl_Target (
   [Date],
   [Name],
   [Age],
   [Num_Aucts]
)
SELECT GETDATE(), [Name], [Age], [Num_Aucts]
FROM yourDB.dbo.tbl_Source

如果要使用触发器,请在BEGIN块中写下以下内容:

INSERT INTO DB2.dbo.tbl_Target (
   [Date],
   [Name],
   [Age],
   [Num_Aucts]
)
SELECT GETDATE(), [Name], [Age], [Num_Aucts]
FROM inserted

每次将数据插入tbl_Source时,触发器都会被触发。但现有数据并未通过触发器插入tbl_Target

答案 1 :(得分:0)

您可以使用GetDate()获取服务器的当前日期

USE DB1
GO

CREATE TRIGGER trg_Insert_tblSource ON tbl_Source
FOR INSERT AS
BEGIN
    INSERT INTO DB2.dbo.tbl_Target (
       [Date],
       [Name],
       [Age],
       [Num_Aucts]
    )
    SELECT GETDATE(), [Name], [Age], [Num_Aucts]
    FROM inserted;
END
GO