2017-04-06 7 views
0

SQL ServerでINSTEAD OFトリガーを作成して、2つの列が同時に更新されない限り更新されないようにしようとしています。どんな助けもありがとう。2つの列が同時に更新されているかどうかを確認します

CREATE Trigger Validation1 
ON tblCust 
INSTEAD OF UPDATE 
AS 
BEGIN 
    <NEW.CustomerAge> = <OLD.CustomerAge> or <NEW.CustomerRange> = <OLD.CustomerRange> 
    <RAISE EXCEPTION> 
    END IF; 
END; 
+0

特定の質問がありますか? SQL ServerのSSMSテンプレートエクスプローラには、トリガーを作成する方法に関する豊富なリソースがオンラインで用意されています。 – dfundako

答えて

1

は、他の一つは

あなたはトリガの後またはトリガ

IF (UPDATE (col1) and UPDATE (col2)) 
BEGIN 
--your logic for both col1 updated at same time 
END; 
else 
begin 
--other logic 
end 

前でUPDATE()を使用することができ、同時に更新されない限り、更新されてから、二つのフィールドを防ぎますコメントでPMBオースティンによって指摘されているように、If論理の内部をさらに調べて、更新された値が値と同じであるかどうかを確認し、logiあなたがそれをアップデートとして扱うかどうかにかかわらず、

+1

これはうまくいきますが、同じ値に更新することもできます。それをブロックしたい場合(両方の列を変更する必要があります)、挿入されたWHERE i.col1と削除されたWHERE i.col1の間のINNER JOINをテストできます<> d.col1とi.col2 <> d.col2。 – pmbAustin

+0

@pmbAustin:それは素晴らしい点です、私はそれを追加します – TheGameiswar

関連する問題