1

SQL Server 2008 で作成された 2 つの同じテーブルがあります。

私が必要とするのは:

に挿入された最新のデータを に追加table1table2ます。

それは可能ですか?

サービス、トリガー、またはストアド プロシージャのようなものですか?

トリガーを使用する必要があると思いますが、方法がわかりません。

私はこれらの2つのテーブルを持っています:

table1  ( field1,field2,field3 )
table2  ( field1,field2,field3 )

table1 に挿入すると、以下の手順で table2 を更新する必要があります。

> IF NotExist(field1=value) in table2 THEN INSERT Into table2 ELSE UPDATE table2
> with new field1 value.
4

2 に答える 2

2

次に例を示します。

USE DatabaseName;
GO
IF OBJECT_ID ('Sch.UpdateSecondTable', 'TR') IS NOT NULL
   DROP TRIGGER Sch.UpdateSecondTable;
GO
CREATE TRIGGER Sch.UpdateSecondTable
ON FirstTable
AFTER INSERT
AS 
    INSERT INTO SecondTable 
    SELECT * FROM Inserted
GO

SQL フィドルのデモ

ただし、最初のテーブルから挿入された値で 2 番目のテーブル フォームを更新する場合は、INSERT句の代わりにこれを試してください。

UPDATE t2
SET t2.name = t1.name
FROM SecondTable t2
INNER JOIN inserted t1 ON t1.id = t2.id

SQL フィドルのデモ

更新: 2 番目の table3e に存在しない値のみを挿入する場合。これらのテーブルが同じ構造 (つまり、同じ列番号と同じデータ型) である場合。EXCEPT次のように set 演算子を使用してこれを行うことができます。

   UPDATE t2
   SET t2.name = t1.name
   FROM SecondTable t2
   INNER JOIN
   (
     SELECT * FROM inserted t1
     EXCEPT SELECT * FROM SECONDTABLE
   ) t1 ON t1.id = t2.id

SQL フィドルのデモ

標準的な方法を使用しない場合は、次のようにします。

   UPDATE t2
   SET t2.name = t1.name
   FROM SecondTable t2
   INNER JOIN
   (
     SELECT * FROM inserted t1
     WHERE id NOT IN(SELECT id FROM SECONDTABLE)
   ) t1 ON t1.id = t2.id

SQL フィドルのデモ

于 2012-11-04T07:57:00.703 に答える
1

トリガーを使用する必要がありますが、大したことではありません。調査を行うと、インターネットにアクセスできます。

于 2012-11-04T07:39:20.493 に答える