本章介绍一种 Mysql 生成 id 的算法,主要用于某些特定数据表,希望有统一的 id 空间,但不是简单的自增
需求是 id 为数值型,可以在 js 环境中安全的使用,每个表有独立的 id 空间,并且全局唯一
思路是这样的
为了在 js 中安全使用,长度最大为 52 位,所以分为区域位(8位)、表位(8位)、id 长度(36位)
为了生成效率直接在 Mysql 自定义方法,首先建立一个表来作为目标表的 id 生成器,利用 replace INTO
方法在达到生成自增 id 的目的,然后根据表名判断位移长度计算出最终 id,完整代码如下
1 | DROP TABLE IF EXISTS `auto_user_id`; |
最后直接查询即可得到最终 id1
select func_gen_auto_id(1, 'user');
最近热读
扫码关注公众号,或搜索公众号“温欣爸比”
及时获取我的最新文章