2017-11-29 6 views
0

値変化を決定し、私はテーブルの更新に取り組んでいます

表:ユーザー(ID、名前、ドブ、CreatedDateに、lastUpdatedDate)

私はlastUpdatedDateを更新したいです名前欄に変更がある場合。

は、まず私が更新トリガーを使用しますが、それは、レコード

いくつかの助けリンクを更新した後に実行され、私は更新トリガの代わりに使用することをお勧めしますが、私は1つが、それがトリガーした後、私のレコードを更新しないことを使用している場合。

どのような解決策ですか?

+2

を更新します。 *あなたのアップデートの代わりに*を実行します。または、更新ステートメントを変更して、他の列を更新することもできます。このテーブルの2つの変更可能な列をコード内のいくつの場所で更新できるか? –

+0

両方の更新を同時に実行するSPを介してのみテーブルにアクセスするとどうなりますか? – Simone

+0

@AaronBertrand okそれは解決策が代わりにトリガーの内部で使用する更新ステートメントだからそれを得た。ありがとう:) –

答えて

0

はよく私がある更新後トリガーでこの問題

に適した解決策を見つけた2テーブルに挿入されるいずれかを設定し、他の一つが削除されます。 両方のテーブルセットから名前を取得することで、そこに値をキャンプすることができます。そこ値が同じであれば、我々はlastUpdatedDateは更新されませんし、値に差がある場合は、代わりにトリガーの、あなたがトリガーで更新をコーディングする必要が使用している場合、我々はlastUdpatedDate

Create TRIGGER [dbo].[User__Update] 
     ON [dbo].[User] 
AFTER Update 
AS 
BEGIN 
     SET NOCOUNT ON; 


     declare @AttributeValue varchar(max) 

     declare @OldAttributeValue varchar(max) 

     SELECT @AttributeValue = INSERTED.Name 
     FROM INSERTED 

     select @OldAttributeValue=Deleted.Name 
     FROM Deleted 

     if(@OldAttributeValue<>@AttributeValue) 
     BEGIN 
       IF UPDATE(Name) 
       BEGIN 
         update [User] set LastUpdatedDate=GetDate() where name [email protected] 
       END 
     END 
END 
+0

@AaronBertrand –

関連する問題