2016-04-22 9 views
0

タイトルには、データベースから別のデータベースにデータを挿入したいとします。第1のデータベース「DB1」はソースであり、第2のデータベース「DB2」はターゲットである。次のように2つの異なるデータベースから2つのテーブルをトリガしてデータを挿入する(SQL Server)

関連するテーブルが定義されています。

DB1 => tbl_Target

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

DB2 => tbl_Source

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

まあ、tbl_Sourceは、データの40行が含まれています。これらの行をtbl_Targetに転送する必要があります。しかし、tbl_Targetがどのように表示されるかは、2つの追加の列IdDateがあります。 Idが自動的に設定されます。重要な列は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? 

誰も私を助けることができますか?ストアドプロシージャが必要ですか?

+0

の現在の日付を取得するには、サーバー –

+0

@syedmohsinの現在の日付を取得するのGetDate()を使用することができますしかし、私はそれを定義する必要がどこ? – yuro

+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に挿入されません。

+0

私は知っていますが、私の場合はどのように定義できますか? – yuro

+0

@yuro私は自分の答えを編集しました。 –

+0

私はあなたのソリューションを試しましたが、DB2テーブルにデータを挿入しません。 – yuro

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 
+0

投稿も試しましたが、DB2のテーブルはDB1のデータで埋められません。 – yuro

関連する問題