.

自增ID:发放券码/红包密令【企业标准版可用】

小常发表于:2021年10月20日 19:06:20更新于:2021年10月21日 15:07:17

自增ID简介

自增ID是新数据插入数据表时生成的一个唯一数字,默认从数字1开始,是除【数据ID】之外另一个由系统生成且不重复的字段,是1、2、3...这样的数值。

image.png

延伸:数据表开启了自增ID字段后,通常每新增1条数据,该数据对应的自增ID值为该数据生成的次序。如在数据表中新建第1条数据时,该数据自增ID值=1;新建第2条数据时,该数据自增ID值=2....新建第N条数据时,该数据自增ID值=N 。

自增ID跟行号的区别:行号根据数据排序动态更新。如某条数据删除后,该数据的行号不会跟随该数据消失,而是延伸至该数据后的其他数据自动调整,不会出现断层;自增ID跟随删除数据消失,这个自增ID将不会再在该数据表中出现。

使用场景


  • 需求场景1:报名分发有序编码

用户报名后(新建数据),需知道他是第几个报名,且要获取到(唯一)名次值,该值可以是自增ID。

主要设置

1、在新建数据时,勾选返回数据,返回自增ID值并赋值给当前H5中的参数变量/全局变量。

image.png

2、自增ID也支持获取后赋值给H5中的参数,一般用于显示或者通过表达式组成新的唯一编码,如表达式:202100000000 +@自增ID@

image.png

需求场景2:线上选房(抢名额)

H5做线上选房,假设共200个名额,本质是抢名额,类似的还有抢车位、抢购商品优惠券等。

每个用户进来的时候,填写姓名、手机号等信息,点击提交后,必须确保他拿到一个号码,如第1个人拿到1,第二个人拿到2....200,每个用户拿到的码都是绝对唯一的,不可重复。报名完毕提示活动结束。


需求场景3:分发券码不重复

用户提前将券码导入至数据库后台参与活动用户进来登记信息后,领取券码,必须确保每人1个券码,且每个用户不会重复。

如遇到大并发分发券码,传统的方式如用修改数据的方式获取用户是第几个并用该修改值去定位券码并分发,会有券码分发重复的风险,自增ID(唯一性特点)可解决该问题。 

通过该自增ID分发券码的方式,曾支持粉丝量达到千万级的公众号红包投放。

主要设置

表A: 红包券码库(红包库)。  至少包含2个字段:编号,所有红包券码。有多少个红包券码,编号就到第几个。

image.png

表B: 用户抽取红包明细表(用户领取情况)。 列:自增ID、参与人信息、领取到的红包券码。

image.png

新建B数据时,后台根据自增ID,从A表获取一个红包序列号,保存到红包序列号中,编辑器中的具体步骤:

1、添加3个全局变量,一个是数值类型,用于存储编号。

image.png

一个是文本类型,用于存储数据ID。

image.png

1个是文本类型,用于存储传递红包券码。

image.png

2、两张数据表都添加进编辑器

image.png

3、可以在用户提交信息准备发放给红包券码时,新建1条数据,并返回数据表里的数据ID给到数据ID(全局变量);自增ID值给到编号(全局变量)。

image.png

4、给红包券码表设置1个过滤表,筛选字段为编号字段,筛选条件为编号全局变量,目的是过滤唯一1条红包库数据中编号=当前用户获取编号的数据。

image.png

5、在新建数据且返回数据成功后,用设置参数值的方式,拿到过滤表中唯一一条数据中的红包券码,给到红包券码全局变量。

001617108bd41b2ef07399e11d38d37

6、通过拿到的红包券码给到红包券码(全局变量)。

image.png

image.png

到以上这一步,我们就完后了红包券码的领取和领取记录。

注意:如果自增ID不是从1 开始计数的,那么红包库表里的编号也应该跟随自增ID变化, 自增ID初始值不能小于红包库里的编号最小值。


— — — — — — — — — — — — — — — —

延伸阅读

  • 背景介绍

在MySQL中,数据表的主键一般采用id字段自增的形式。使用自增ID给我们带来不少便捷,但也有不少坏处。

  • 知识剖析

什么是自增ID(MySQL数据库)

自增ID是在设计表时如果将id字段的值设置为自增的形式也就是AUTO_INCREMENT(自动增长),那么当插入一行数据时就无需指定id,数据表会根据前一个id值+1进行填充。

指定了AUTO_INCREMENT的列必须要建索引,一般把ID作为主键,这样系统会自动为ID建立索引。


自增ID有什么好处?

(1) 增加记录时,可以不用指定id字段,不用担心主键重复问题。

(2)数据库自动编号,速度快,而且是增量增长,按顺序存放,对于检索非常有利;

(3)数字型,占用空间小,易排序,在程序中传递也方便;


自增ID有什么坏处?

(1) 不具有连续性,表中auto_increment最大值被删除,将不会被重用。就是说会跳号(如果设定的auto_increment_increment是1,那么下一次插入的id值将会从被删除的最大值算起,也就是被删除的最大值+1)。

(2)历史数据表的主键id会与数据表的id重复,两张自增id做主键的表合并时,id会有冲突,但如果各自的id还关联了其他表,这就很不好操作。

(3) 很难处理分布式存储的数据表,尤其是需要合并表的情况下

(4) 在系统集成或割接时,如果新旧系统主键不同是数字型就会导致修改主键数据类型,这也会导致其它有外键关联的表的修改,后果同样很严重;


更多请戳原文:原文链接:https://blog.csdn.net/jnshu_it/article/details/84283587

版权声明:本文为CSDN博主「IT修真院」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。