私は1回だけ割り当てることができるnull可能な列を持っています。一旦設定されると、値を上書きしようとする試みは失敗するはずです。これはCHECK制約で達成できますか?(つまり、列の更新前の値を見て新しい値と比較することは可能ですか?)これはUPDATE TRIGGERでのみ可能ですか?CHECK制約を使用して列値の再割り当てを防止できますか?
ありがとうございました!
私は1回だけ割り当てることができるnull可能な列を持っています。一旦設定されると、値を上書きしようとする試みは失敗するはずです。これはCHECK制約で達成できますか?(つまり、列の更新前の値を見て新しい値と比較することは可能ですか?)これはUPDATE TRIGGERでのみ可能ですか?CHECK制約を使用して列値の再割り当てを防止できますか?
ありがとうございました!
:
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
チェック制約は、私の知ることを、時間的な認識を持っていません。
いいえ、チェック制約では、列の "前"値を確認できません。
これを実行するにはトリガーが必要です。権限を使用して管理することもできます(たとえば、列が含まれていないビューに対してのみ更新権限を許可するなど)。
を参照してくださいあなたはこのようなクエリで、update
トリガーでこれを行うことができますまた、関連する接続項目Add DRI to enforce immutable column values