2012-02-07 28 views
0

テーブルが更新されたときにSQLトリガを起動します。私はSimActivationと呼ばれるテーブルと、2つのパラメータ、msisdn(varchar)とdate(datetime)をとるspUpdateMnpDateというストアドプロシージャを持っています。SQL更新トリガー

SimActivationテーブルが更新されたら、新しい値でプロシージャを呼び出す必要があります。ここで

は前後に変更した後、私は現時点で得たものである:

USE StoreSale; 
GO 
CREATE TRIGGER dbo.tSyncMnpDate 
ON [dbo].[SimActivation] 
AFTER UPDATE 
AS  
    DECLARE @date datetime 
    DECLARE @msisdn varchar(10) 
    SET @date = (select ProcessDate from inserted) 
    SET @msisdn = (select Msisdn from inserted) 
    EXEC [spUpdateMnpDate] 
    @msisdn, @date; 

GO 

誰もが正しい方向に私を指すことができますか?

感謝:)

答えて

2

は、あなたが持っている問題は、1 以上行が更新された場合にトリガーが発動するということです。現時点では、SQL Serverの場合とは異なり、トリガーが各行に対して起動すると想定しています。お電話しようとしているストアドプロシージャは、私がトリガーにそこから出て、内のコードを引っ張ると思いますかなり単純である場合

。しかし、と変更された行が変更された場合でも、と設定されていることに注意してください。そうすれば、SQLを適切に記述する必要があります。

EDIT:私はあなたの手順は、あなたがあなたのトリガーでこれを行うことができればPKは、@msisdnに等しい日付を更新していると仮定します。

UPDATE Your_Table 
SET Your_Table.ProcessDate = inserted.ProcessDate 
FROM Your_table INNER JOIN inerted ON Your_Table.Msisdn = inserted.Msisdn 

は、テーブルの結合が、それは1のために働くことが保証されますまたは多くの更新された行。