美文网首页
主从延时一些思考

主从延时一些思考

作者: _Henry_ | 来源:发表于2017-10-19 11:11 被阅读0次

    简单介绍主从延时场景。

    业务场景:给用户发送促销活动代金券

    技术实现步骤:
    step 1 : 创建促销活动
    step 2 : 创建多种代金券类型
    step 3 : 给用户发送代金券

    对应表结构:

    1.活动表activity:
        id(自增),name,...
    
    2.代金券表coupons:
        id(自增),name,money,...
    
    3.用户发放表
        id(自增),aid,cid
    

    问题:
    在 step2 -> step3 过程中,创建代金券类入库后,需要拿到代金券类型自增id然后给用户发送。
    那么,最容易想到的方法就是插入表后查一下该表(通过唯一索引,最大id等),拿到代金券信息,如果主从存在延时,那么插入代金券表后立即查表可能返回空或者一条不理想的结果等。

    解决方法:插入的数据除了自增id其余数据我们都是知道的,那么问题转化为拿到本次插入id即可。可以使用 lastinsertid() 来获取最后一次插入id。

    第一 、该函数是基于Connection对象的,返回的值是该Connection对象产生对影响AUTO_INCREMENT列的最新语句第一个AUTO_INCREMENT值的。这个值不能被其它Connection对象的影响,即它们产生它们自己的AUTO_INCREMENT值。

    第二 、LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,再向表b插入数据,LAST_INSERT_ID返回表b中的Id值。

    第三 、 使用一条INSERT语句插入多个行, LAST_INSERT_ID() 只返回插入的第一行数据时产生的值

    相关文章

      网友评论

          本文标题:主从延时一些思考

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