我有一个可以为空的列,只能分配一次。设置后,任何覆盖该值的尝试都将失败。这可以通过CHECK约束来完成(即是否可以查看列的更新前值并与新值进行比较)或者这只能通过UPDATE TRIGGER完成?
谢谢!
答案 0 :(得分:1)
不,检查约束无法看到列的“之前”值。
您需要触发此操作或通过权限进行管理(例如,仅允许对不包含该列的视图的更新权限。)
答案 1 :(得分:1)
您可以使用update
触发器执行此操作,并使用以下查询:
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
检查约束没有时间识别,我知道。