【问题标题】:Trigger two tables from two different databases to insert data (SQL Server)触发两个不同数据库中的两个表插入数据(SQL Server)
【发布时间】:2016-08-15 20:43:00
【问题描述】:

正如标题所说,我想将数据从一个数据库插入另一个数据库。第一个数据库“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。在此列中,我想设置当前日期。在这种情况下从今天开始。如何使用 T-SQL 在 SQL Server 的触发器函数中定义它?

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

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?

谁能帮帮我?我需要存储过程吗?

【问题讨论】:

  • 您可以使用 GetDate() 获取服务器的当前日期
  • @syedmohsin 但是我必须在哪里定义它?

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


【解决方案1】:

我不知道我是否完全理解你的问题。但是,如果您只想将数据从一个表传输到另一个表,则不需要触发器。您可以通过简单的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

【讨论】:

  • 我知道,但我该如何定义它?
  • 我试过你的解决方案,但它没有在 DB2 表中插入数据。
  • 我看到我已经创建了触发器。那么,如何使用这个触发器来执行代码呢?
  • 只要将数据插入tbl_Source,触发器就会触发并将数据插入tbl_Target。我认为您应该首先了解triggers 以及它们的使用方式。
  • 好的..在我的目标表中是插入的数据。但这很好奇。数据被多次插入。
【解决方案2】:

您可以使用 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

【讨论】:

  • 我也试过你的帖子,但是 DB2 中的表没有填充 DB1 中的数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-18
  • 1970-01-01
相关资源
最近更新 更多