2016-04-22 14 views
0

Was der Titel sagt, ich möchte Daten aus einer Datenbank in eine andere Datenbank einfügen. Die erste Datenbank "DB1" ist die Quelle und die zweite Datenbank "DB2" ist das Ziel.Trigger zwei Tabellen aus zwei verschiedenen Datenbanken zum Einfügen von Daten (SQL Server)

Die entsprechenden Tabellen sind wie folgt definiert:

DB1 => tbl_Target

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

DB2 => tbl_Source

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

Nun, tbl_Source enthält 40 Zeilen mit Daten. Ich muss diese Zeilen in tbl_Target übertragen. Aber wie Sie sehen können, hat tbl_Target zwei zusätzliche Spalten Id und Date. Id wird automatisch eingestellt. Die wichtige Spalte ist Date. In dieser Spalte möchte ich das aktuelle Datum einstellen. In diesem Fall von heute. Wie kann ich dies in einer Triggerfunktion in SQL Server mit T-SQL definieren?

Ich habe in dieser Richtung begonnen:

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? 

Kann mir jemand helfen? Brauche ich eine gespeicherte Prozedur?

+0

Sie GetDate (können zu bekommen) aktuelle Datum des Servers –

+0

@syedmohsin zu erhalten, aber wo ich es definieren? – yuro

+0

eine Antwort geschrieben –

Antwort

2

Ich weiß nicht, ob ich Ihre Frage vollständig verstanden habe. Wenn Sie jedoch nur die Daten von einer Tabelle in eine andere übertragen möchten, benötigen Sie keinen Trigger. Man könnte dies mit einem einfachen INSERT...SELECT erreichen:

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

Wenn Sie einen Trigger verwenden möchten, die folgenden in der BEGIN Block schreiben:

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

Der Trigger jedes Mal, wenn Daten in tbl_Source einfügen wird ausgelöst, . Die vorhandenen Daten werden jedoch nicht mit Ihrem Trigger in tbl_Target eingefügt.

+0

Ich weiß, aber wie kann ich es in meinem Fall definieren? – yuro

+0

@yuro Ich habe meine Antwort bearbeitet. –

+0

Ich habe Ihre Lösung versucht, aber es fügt die Daten nicht in DB2-Tabelle ein. – yuro

0

können Sie verwenden GetDate() aktuelle Datum der 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 GETDATE(), [Name], [Age], [Num_Aucts] 
    FROM inserted; 
END 
GO 
+0

Ich habe auch Ihren Post versucht, aber die Tabelle in DB2 füllt nicht mit den Daten von DB1. – yuro

Verwandte Themen