-1

更新後にフィールドの値を取得したい、たとえば2つのテーブルがある

table1:  ID       Price          UserID         type 

table2:  IDLog    ID(FK table1)  OldPrice  

そして、表 1 の価格を更新します。

UPDATE table1
SET    Price = '1111'
WHERE  TYPE = 1  

今、すべての更新が値ID table1を取得し、table2に挿入する前に、
どのようにすべてのフィールドに値を取得するか??

4

4 に答える 4

1

私見FOR UPDATE TRIGGERは行く方法です。そうすれば、DB内にすべてのロギングロジックを含めることができます。

于 2013-01-16T08:55:47.027 に答える
1

これを行うより良い方法は、table1 (もちろん SQL Server 側) でトリガーを使用することです。

CREATE TRIGGER table1_update ON table1 FOR UPDATE 
AS 
BEGIN
       INSERT INTO table2 (IDLog, OldPrice)
       SELECT ID, Price
       FROM deleted
          INNER JOIN inserted ON
               deleted.ID = inserted.ID
               deleted.Price <> inserted.Price
END
于 2013-01-16T08:58:56.033 に答える
0

更新する前に、table2にデータを挿入できます。

INSERT INTO table2
SELECT ID, Price from table1
WHERE  TYPE = 1

--Update table1 after inserting
UPDATE table1
SET    Price = '1111'
WHERE  TYPE = 1  

もう1つの方法は、table1の更新トリガーを作成して、更新されたデータをtable2に挿入することです。

于 2013-01-16T08:55:14.397 に答える
0

出力句を使用できます。

update table1
output inserted.ID into table2
set Price='1111' where type=1
于 2013-01-16T08:52:00.373 に答える