我有一列order_id在开票表 一旦此order_id存在(意味着不是NULL), 然后它不能再次更新为NULL或任何其他值。设置约束或任何其他解决方案不能更新表
我有一个巨大的bug,以某种方式为某些记录NULL值。
1.我现在正在做1个月的QA,找不到sp将字段更新为NULL。我涵盖了所有的UI和业务逻辑,并没有发现任何东西。有没有更好的方法来找到什么更新某些字段为空?
2.是否存在SQL方式的约束,一旦它具有值就会将警卫放在字段上,并且如果有任何事情会尝试更新它,将会抛出错误。
我有一列order_id在开票表 一旦此order_id存在(意味着不是NULL), 然后它不能再次更新为NULL或任何其他值。设置约束或任何其他解决方案不能更新表
我有一个巨大的bug,以某种方式为某些记录NULL值。
1.我现在正在做1个月的QA,找不到sp将字段更新为NULL。我涵盖了所有的UI和业务逻辑,并没有发现任何东西。有没有更好的方法来找到什么更新某些字段为空?
2.是否存在SQL方式的约束,一旦它具有值就会将警卫放在字段上,并且如果有任何事情会尝试更新它,将会抛出错误。
create table test2 (id int identity primary key, name varchar(20) not null, somevalue varchar(20))
GO
create trigger test2_upd_trigger
on test2
after update as
begin
update test2 set somevalue = coalesce(d.somevalue, i.somevalue)
from inserted i join deleted d on i.id = d.id
join test2 on test2.id = i.id
end
GO
insert test2 (name) values ('Demo1')
update test2 set somevalue = 'A value' where id = 1 -- This is allowed
select * from test2 -- [somevalue] has been assigned a value
update test2 set somevalue = null where id = 1 -- This is "rejected" by the trigger
select * from test2 -- [somevalue] retains its value
我认为你需要一个触发强制执行这一点。 –
为什么字段可以为空? –
该网站是巨大的,我什至不知道在哪里把这个触发器,我找不到什么命令更新值为null,如果我知道我会解决它。我怎么找到触发的地方? – Alexxx