低代码平台 数据库字段值不重复

在开发过程中,要求表里某字段值唯一

一、场景

在单据,要求某字段值不重复
查看数据模型:
低代码平台 数据库字段值不重复_第1张图片
查看单据:
低代码平台 数据库字段值不重复_第2张图片

二、问题

区域编码,区域名称不重复

三、解决方案

1)数据库加索引

低代码平台 数据库字段值不重复_第3张图片

2)书写保存后存储过程

-- Create date: 
-- Description:	
-- =============================================
CREATE PROCEDURE pro_massifareasave
	@voucherno VARCHAR(100)--:单据类型
,@keyid  VARCHAR(100)--:单据ID
,@state  VARCHAR(100)--:状态[add、
AS
BEGIN
	DECLARE @Error VARCHAR(1000),@Error1 VARCHAR(1000)
	--select   areacode FROM  bs_massifarea_det  GROUP BY  areacode HAVING COUNT(areacode)>1
	
	 SELECT @Error =STUFF((select areacode +  N',' from bs_massifarea_det GROUP BY  areacode HAVING COUNT(areacode)>1 for xml path('')),1,0,N'')
      
	 SELECT @Error1 =STUFF((select areaname +  N',' from bs_massifarea_det GROUP BY  areaname HAVING COUNT(areaname)>1 for xml path('')),1,0,N'')

	 IF @Error IS NULL  SET @Error=''

	 IF @error <>''
	 BEGIN
		SET @Error='区域编码'+ @Error+'添加重复,请检查!'
		 RAISERROR(@Error,11,1)
		 return
	 END
     

	  IF @error1 <>''
	 BEGIN
		SET @Error1='区域名称'+ @Error1+'添加重复,请检查!'
		 RAISERROR(@Error1,11,1)
		 return
	 end


end
GO

解释

<1>STUFF

STUFF

参数(character_expression,start,length,character_expression )

将第一个参数从start开始删除,删除长度为length,然后把第四个参数放到start的位置

<2> N
 SELECT @Error =STUFF((select areacode +  N',' from bs_massifarea_det GROUP BY  areacode HAVING COUNT(areacode)>1 for xml path('')),1,0,N'')

低代码平台 数据库字段值不重复_第4张图片

四、平台设置存储过程

低代码平台 数据库字段值不重复_第5张图片

你可能感兴趣的:(数据库,oracle,存储过程)