<insertid="addAndGet"keyColumn="incr_id"keyProperty="record.incrId"useGeneratedKeys="true"><selectKeykeyProperty="record.incrId"resultType="long"order="BEFORE">
select if(max(incr_id) is null, #{delta}, max(incr_id) + #{delta}) as newId from procurement_auto_increment where name = #{record.name} and state = #{record.state}
</selectKey>
INSERT INTO procurement_auto_increment (name, state , incr_id)
values (#{record.name}, #{record.state}, #{delta})
ON DUPLICATE key update incr_id = if(state = #{record.state}, ifnull(incr_id, 0) + #{delta}, #{delta} ), state = #{record.state}
</insert>