美文网首页
SQL Server--数据用存储过程去重插入

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

作者: 空白_ | 来源:发表于2017-12-06 17:11 被阅读32次

     <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>

    相关文章

      网友评论

          本文标题:SQL Server--数据用存储过程去重插入

          本文链接:https://www.haomeiwen.com/subject/qarlixtx.html