2016-06-30 4 views
-1

私はSQLサーバで新しく、質問があります: (1)。私はtableBとtableAを持っています。 (2)。 tableBからすべての列をtableAから条件(たとえば:collumn A1 = 'PABL')に複製(同期化)できるようにしたい。 (3)。 tableAが更新されると、テーブルが自動的にに更新されました。 (手動ではない)。 (4)。私はSQL Server 2008 r2を使用しています。テーブルテーブルからの同期テーブルB条件

どうすればよいですか?

+0

あなたが "条件付き" で何を意味するか解析することは困難です、しかし、あなたは基本的には後を探していますpdateトリガー。より具体的に言えば、詳細を述べる必要がありますが、SQL Serverで更新後のトリガーを検索すると、探しているものが見つかるはずです。 – ZLK

答えて

0

まず、データベース設計を再考する必要があります。同じデータを2つの異なる場所に保持することは、通常、設計が不良であることを示す。
tableAのデータの一部をテーブルに格納しているかのように本当に処理したい場合は、そのビューが対象となります。

データベースをリファクタリングできない場合は、tableBのデータを変更するtableAの更新、挿入、削除のトリガーを使用し、同期が必要な場合は、トリガーを使用する必要があります。プロセスを双方向にするには、tableAでデータを変更するtableBでも同じ処理を行う必要があります。

サンプルはトリガー:

挿入:

CREATE TRIGGER TR_tableA_INSERT ON tableA 
    FOR INSERT 
AS 
BEGIN 

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

END 

削除:

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 

を更新:

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

こんにちは、ありがとうございます。トリガーは今働いています。私はtableCを持っている場合、いくつかの変更が必要です。tableBはtableAからcolumnA2を、columnC1はtableCからcolumnC2に、columnA1はtableAから、columnA2はテーブルAから同期することができます。したがって、tableBはcolumnA1、columnA2、columnC1、columnC2です。再度、感謝します。 – tebe

関連する問題