基于Cache数据库的数据重复验证

此方法基于Cache数据库的索引结构,根据数据rowid,code,desc进行数据重复验证,确保插入数据的code及desc字段保持唯一约束

/// Creator:李欣
/// CreatDate:2017-08-05
/// Description:数据校验方法 根据索引校验代码和描述是否存在
/// Table:User.MBDPModule
/// Input:rowid:String code:String desc:String
/// Output:
/// Return:1:数据重复 0:数据不重复
/// Others:
/// w ##class(web.DHCBL.CT.MBDPModule).FormValidate(2,"mokuai1","")
ClassMethod FormValidate(id As %String,code As %String,desc As %String)As %String
{
 new (id,code,desc)
 flag="",flagc="",flagd=""
 s:code'="" code=$$ALPHAUP^SSUTIL4(code)//此处用于转换成大写
 s:desc'="" desc=$$ALPHAUP^SSUTIL4(desc)//此处用于转换成大写
 s:code'="" flagc=$d(^MBDP("PMO",0,"Code",code))
 s:desc'="" flagd=$d(^MBDP("PMO",0,"Desc",desc))
 if (id="")//如果为空,增加时的重复判断
 {
  if ((flagc>0)||(flagd>0))
  {
flag=1//返回重复标志
  }
  else
  {
flag=0//返回不重复标志
  }
 }
 else //如果不为空,修改时的重复判断
 {
idc=""
idd=""
s:code'="" idc=$o(^MBDP("PMO",0,"Code",code,0))
s:desc'="" idd=$o(^MBDP("PMO",0,"Desc",desc,0))
if ((idc'="")&(idc'=id)&(flagc>0))||((idd'="")&(idd'=id)&(flagd>0))flag=1//返回重复标志
else  flag=0//返回不重复标志
 }
 flag
}

当前台传回rowid为空时(此时为新增操作),通过建立在code,desc字段上的索引判断前台传入的code及desc是否在数据库中已存在数据,当数据存在时$d()返回值为01(索引本身没有值,但下一个节点为RowID),此时返回1,表示此数据已存在,否则返回0,表示数据不重复.当前台传回rowid,时,为修改操作,在判断时需忽略自身进行重复验证(idc'=id).

你可能感兴趣的:(基于Cache数据库的数据重复验证)