<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>
网友评论