2016-07-13 22 views
0

特定の列が更新された(テーブル全体ではない)場合にのみ、テーブルデータに挿入するトリガーを作成しようとしています。例えばSQL - 特定の列が更新された場合にのみテーブルにデータを挿入するトリガー

私はtbl.Atbl.A_Historyと呼ばれる2つのテーブルがあります。ID、名前、場所、年齢、性別:tbl.A

は5列があります。

IDや年齢、性別が更新、削除、挿入された場合は、場所や名前が変更された場合にのみ更新された行を履歴に挿入したいと思います。

また、私は場所と名前を区別できるようにしたいと思います。


  • 場所はlocation have been changedを挿入変更した場合。

  • 名前が変更された場合は、name have been changedとなります。


私は事のカップルを試みたが、運としています。 DBで

+0

? Microsoft?オラクル? – Tyron78

+0

Microsoft DBにあります。上記の質問を –

答えて

1
CREATE TRIGGER trigger_name ON tbl.A 
FOR UPDATE 
AS 
IF (UPDATE(location) OR UPDATE(name)) 
BEGIN 
-- your sql here 
END 
+0

試してください。トリガは、名前または場所の列に更新操作が実行されたときにのみ起動します – sunnyadav71

+0

ありがとうございました。そして、どのようにそれらのどれが更新されたかに基づいて変数に異なる文字列を挿入するのですか? –

+0

私は挿入文字列を区別するためのトリガを追加しました... – Tyron78

-1
CREATE TRIGGER Test_Trg_01 
ON Test 
AFTER Update 
AS 
BEGIN 
    IF update(name) 
    INSERT INTO Test_Log SELECT id, 'name updated' AS LogMessage FROM inserted; 

    IF update(country) 
    INSERT INTO Test_Log SELECT id, 'country updated' AS LogMessage FROM inserted; 
END 
+1

UPDATEは、列が更新ステートメントにある場合はtrueを返します。ほとんどの場合、人々が望むのは、価値が実際に変化したかどうかを知ることです。挿入された値と削除された値を比較する必要があるかどうかを判断する。 –

+0

はい、あなたは正しいです。私は、この点を忘れて...このようなもので可能でなければなりません: INSERT INTO Test_Log SELECTのID、LogMessageに としての '名前は更新' の挿入 \t \t EXCEPT SELECT ID、削除から名前から名前、IDを選択(FROM )AS x; – Tyron78

関連する問題