私はSQLサーバで新しく、質問があります: (1)。私はtableBとtableAを持っています。 (2)。 tableBからすべての列をtableAから条件(たとえば:collumn A1 = 'PABL')に複製(同期化)できるようにしたい。 (3)。 tableAが更新されると、テーブルが自動的にに更新されました。 (手動ではない)。 (4)。私はSQL Server 2008 r2を使用しています。テーブルテーブルからの同期テーブルB条件
どうすればよいですか?
私はSQLサーバで新しく、質問があります: (1)。私はtableBとtableAを持っています。 (2)。 tableBからすべての列をtableAから条件(たとえば:collumn A1 = 'PABL')に複製(同期化)できるようにしたい。 (3)。 tableAが更新されると、テーブルが自動的にに更新されました。 (手動ではない)。 (4)。私はSQL Server 2008 r2を使用しています。テーブルテーブルからの同期テーブルB条件
どうすればよいですか?
まず、データベース設計を再考する必要があります。同じデータを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
こんにちは、ありがとうございます。トリガーは今働いています。私はtableCを持っている場合、いくつかの変更が必要です。tableBはtableAからcolumnA2を、columnC1はtableCからcolumnC2に、columnA1はtableAから、columnA2はテーブルAから同期することができます。したがって、tableBはcolumnA1、columnA2、columnC1、columnC2です。再度、感謝します。 – tebe
あなたが "条件付き" で何を意味するか解析することは困難です、しかし、あなたは基本的には後を探していますpdateトリガー。より具体的に言えば、詳細を述べる必要がありますが、SQL Serverで更新後のトリガーを検索すると、探しているものが見つかるはずです。 – ZLK