2个线程一起过来扣减剩余人数,第一个扣成0了,防止第二个继续执行
并且扣减剩余额度保证 扣减扣不为零
<update id="updateProdQuotaNotUseReserveCode">
update CTS_PROD_QUOTA_CONTROL
<set>
<if test="leftQuota != null">
LEFT_QUOTA = IFNULL(LEFT_QUOTA,0)+
#{leftQuota,jdbcType=DECIMAL},
</if>
<if test="leftCount != null">
LEFT_COUNT = IFNULL(LEFT_COUNT,0)+
#{leftCount,jdbcType=INTEGER},
</if>
<if test="buyQuota != null">
BUY_QUOTA = IFNULL(BUY_QUOTA,0)+
#{buyQuota,jdbcType=DECIMAL},
</if>
<if test="buyCount != null">
BUY_COUNT = IFNULL(BUY_COUNT,0)+
#{buyCount,jdbcType=INTEGER},
</if>
</set>
where PROD_ID = #{prodId,jdbcType=VARCHAR}
and ACCPT_MODE = #{accptMode,jdbcType=CHAR}
and COMPANY_NO = #{companyNo,jdbcType=CHAR}
and SUB_COMPANY_NO = #{subCompanyNo,jdbcType=CHAR}
<if test="leftQuota != null">
AND IFNULL(LEFT_QUOTA,0) + #{leftQuota,jdbcType=DECIMAL} >= 0
</if>
<if test="leftCount != null">
AND LEFT_COUNT >= 0
</if>
</update>