2016-06-30 5 views
-1

Ich bin neu in SQL Server, ich habe eine Frage: (1). Ich habe TableB und TableA; (2). Ich möchte TableB in der Lage sein, alle Spalten von Tabelle A mit Bedingung zu replizieren (zum Beispiel: collumn A1 = 'PABL'); (3). Wenn Tabelle A aktualisiert wird, wird die Tabelle automatisch aktualisiert. (nicht manuell); (4). Ich benutze SQL Server 2008 R2.Sync TabelleB von TabelleA mit Bedingung

Was soll ich tun?

+0

Es ist schwer zu analysieren, was Sie unter "mit der Bedingung" , aber du suchst grundsätzlich nach dir pdate auslösen. Um genauer zu sein, müssten Sie mehr Details angeben, aber nach SQL Server-Auslösern suchen und nach etwas suchen, nach dem Sie suchen. – ZLK

Antwort

0

Nun, das erste, was Sie tun sollten, ist Ihr Datenbankdesign zu überdenken. Wenn dieselben Daten an zwei verschiedenen Orten gespeichert werden, deutet dies auf ein schlechtes Design hin.
Wenn Sie wirklich einen Teil der Daten in Tabelle A so behandeln möchten, als ob sie in einer Tabelle gespeichert wären - nun, das sind Ansichten.

Wenn Sie die Datenbank nicht umgestalten können, sollten Sie Trigger zum Aktualisieren, Einfügen und Löschen in Tabelle A verwenden, die die Daten in Tabelle B ändern, und wenn Sie die Synchronisierung möchten. Prozess zu bidirektional zu sein, müssen Sie das gleiche auf TabelleB tun, die die Daten in TabelleA ändern wird.

Probe löst:

einfügen:

CREATE TRIGGER TR_tableA_INSERT ON tableA 
    FOR INSERT 
AS 
BEGIN 

    INSERT INTO TableB (<ColumnsList>) 
    SELECT <ColumnsList> 
    FROM Inserted 
    WHERE inserted.columnA1 = 'PABL' 

END 

löschen:

CREATE TRIGGER TR_tableA_DELETE ON tableA 
    FOR DELETE 
AS 
BEGIN 

    DELETE TableB 
    FROM TableB 
    INNER JOIN Deleted ON <join condition> 
    WHERE Deleted.columnA1 = 'PABL' 

END 

Update:

CREATE TRIGGER TR_tableA_UPDATE ON tableA 
    FOR UPDATE 
AS 
BEGIN 

    UPDATE TableB 
    FROM TableB 
    INNER JOIN Inserted ON <join condition> 
    WHERE inserted.columnA1 = 'PABL' 

END 
+0

Hallo, danke für deine Hilfe. Der Auslöser ist jetzt aktiviert. Ich brauche etwas Änderung, wenn ich tableC habe, und ich will tableB fähig, columnA1, columnA2 von tableA und columnC1, columnC2 von tableC zu synchronisieren. Die Tabelle B ist also Spalte A1, Spalte A2, Spalte C1, Spalte C2. Danke noch einmal. – tebe

Verwandte Themen