SQL Server--数据用存储过程去重插入

 <2017年11月27日16:39:10>

--Author:<ldq>

-- Description: <数据在写入数据库之前,一般数据库没有做唯一值或者其它的原因导致数据插入可以无限重复插入时,用sql的存储过程来简单实现不重复插入数据。>

-- =============================================

ALTER PROCEDURE [dbo].[Hq_Attendance]

@A0188 INT, @CARD_TIME DATETIME, @ACTIONTIME DATETIME

AS

--数据写入HR数据库,不重复数据

BEGIN TRANSACTION

--先尝试更新记录占位置

UPDATE K_CARD WITH(HOLDLOCK)

SET [CARD_TIME] = [CARD_TIME]

WHERE A0188 = @A0188 and CARD_TIME = @CARD_TIME;

--如果更新操作没有影响行,证明记录不存在,则插入

IF @@ROWCOUNT<1

BEGIN

INSERT K_CARD ( A0188,CARD_TIME,SJLY,ACTIONTIME,SIGNED )

VALUES ( @A0188,@CARD_TIME,'考勤机接收',@ACTIONTIME,'2');

END

COMMIT



<!--数据调用存储过程-->

<insert  id="Storedprocedure" parameterType="java.util.Map"statementType="CALLABLE">

<![CDATA[

{call Hq_Attendance

(

#{A0188,mode=IN,jdbcType=VARCHAR},

#{CARD_TIME,mode=IN,jdbcType=VARCHAR},

#{ACTIONTIME,mode=IN,jdbcType=VARCHAR}

</insert>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。