2012-01-09 9 views
1

私は1回だけ割り当てることができるnull可能な列を持っています。一旦設定されると、値を上書きしようとする試みは失敗するはずです。これはCHECK制約で達成できますか?(つまり、列の更新前の値を見て新しい値と比較することは可能ですか?)これはUPDATE TRIGGERでのみ可能ですか?CHECK制約を使用して列値の再割り当てを防止できますか?

ありがとうございました!

答えて

1

update t1 set 
    field = d.field 
from 
    table t1 
    inner join inserted i on 
     t1.id = i.id 
    inner join deleted d on 
     t1.id = d.id 
where 
    i.field != d.field 

チェック制約は、私の知ることを、時間的な認識を持っていません。

1

いいえ、チェック制約では、列の "前"値を確認できません。

これを実行するにはトリガーが必要です。権限を使用して管理することもできます(たとえば、列が含まれていないビューに対してのみ更新権限を許可するなど)。

を参照してくださいあなたはこのようなクエリで、updateトリガーでこれを行うことができますまた、関連する接続項目Add DRI to enforce immutable column values

関連する問題