能否通过触发器实现满足某个条件时,阻止审核单据?
如题,比如,领料单单身有两个栏位A、B,当A或B的值为空时,不允许审核单据,并且提示信息,只有当A,B有具体值时才可以审核(注,无系统源码,才想这样的下三烂手段)
但同时引发出另一个问题困扰我,如果是修改单据,某一行要控制的“参考单别”或“参考单号”漏写,则也会提示 '“参考单别”或“参考单号”不能为空!',造成修改后的整张单据都不能保存,必须要放弃整张单据,重新来修改。
哦 这个单据审核操作也是update操作是吧,那就和普通的update操作,没区别,所以不管是审核,还是更新,都会报错了。
如果在操作的时候,能区分审核,还是更新操作,就好了
系统单据的审核,在后台数据库就是有单据的单头档,和单身档两个表,各有一个审核码的字段,默认为‘ N ’,审核之后就都更新为‘ Y ’
哦 ,那就在你的update触发器中,再加个判断:
create trigger tr_test_update on PURTA
for update
as
if update(审核码)--这个就是审核
begin
if exists(select * from inserted left join PURTB on
inserted.单别=PURTB.单别 and inserted.单号=PURTB.单号 where A='' or B='')
begin
raiserror('“参考单别”或“参考单号”不能为空!',16,1)
rollback
end
end
go